Membalikkan string adalah salah satu pertanyaan JavaScript yang paling sering diajukan selama wawancara teknis. Pewawancara mungkin meminta Anda untuk menulis cara berbeda untuk membalikkan string, atau mereka mungkin meminta Anda untuk membalikkan string tanpa menggunakan metode bawaan, atau mereka bahkan mungkin meminta Anda untuk membalikkan string menggunakan rekursi
Mungkin ada lusinan cara berbeda untuk melakukannya, tidak termasuk fungsi balik bawaan, karena JavaScript tidak memilikinya
Di bawah ini adalah tiga cara saya yang paling menarik untuk menyelesaikan pertanyaan tentang membalikkan string dalam JavaScript
Tantangan Algoritma
Anda mungkin perlu mengonversi string menjadi larik sebelum membalikkannyafunction reverseString(str) { return str; } reverseString("hello");
Hasil Anda harus berupa string
Test Case berupa
- reverseString("halo") harus "olleh"
- reverseString(“Howdy”) harus “ydwoH”
- reverseString("Salam dari Bumi") harus mengembalikan "htraE morph sgniteerG"
1. Mengembalikan String dengan Fungsi Bawaan
Untuk solusi ini, kami akan menggunakan tiga metode. Metode string. prototipe. split(), metode Array. prototipe. reverse() dan metode Array. prototipe. bergabung()
- Metode split() membagi objek String menjadi array string dengan memisahkan string menjadi sub-string
- Reverse() metode membalikkan array di tempat. Elemen array pertama menjadi yang terakhir dan yang terakhir menjadi yang pertama
- Metode join() menggabungkan semua elemen array menjadi sebuah string
Gabungkan ketiga metode secara bersamaan
function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");2. Membalikkan String Dengan Pengurangan For Loop
function reverseString(str) { // Step 1. Buat string kosong yang akan menampung string yang baru dibuat var newString = ""; // Step 2. Buat FOR loop /* Poin awal loop adalah (str.length - 1) yang sesuai dengan karakter terakhir dari string, "o" Selama i lebih besar dari atau sama dengan 0, loop akan terus berlanjut Kita mengurangi i setelah setiap iterasi */ for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; // atau newString = newString + str[i]; } /* Di sini panjang hello sama dengan 5 Untuk setiap iterasi: i = str.length - 1 dan newString = newString + str[i] Iterasi pertama: i = 5 - 1 = 4, newString = "" + "o" = "o" Iterasi kedua: i = 4 - 1 = 3, newString = "o" + "l" = "ol" Iterasi ketiga: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" Iterasi keempat: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" Iterasi kelima: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" Akhir dari FOR Loop*/ // Step 3. Mengembalikan string yang sudah dibalik return newString; // "olleh" } reverseString('hello');Tidak ada komentar
function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');_3. Membalikkan String Dengan Rekursi
Untuk solusi ini, kami akan menggunakan dua metode. Metode string. prototipe. substr() dan metode String. prototipe. charAt()
- Metode substr() mengembalikan karakter dalam string mulai dari lokasi yang ditentukan hingga jumlah karakter yang ditentukan
- Metode charAt() mengembalikan karakter yang ditentukan dari sebuah string
Kedalaman rekursi sama dengan panjang String. Solusi ini bukan yang terbaik dan akan sangat lambat jika String sangat panjang dan ukuran tumpukan menjadi perhatian utama
function reverseString(str) { if (str === "") // Ini adalah kasus terakhir yang akan mengakhiri rekursi return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* Bagian Pertama dari metode rekursi Anda harus ingat bahwa Anda tidak hanya memiliki satu panggilan, Anda akan memiliki beberapa panggilan yang bersarang Setiap panggilan: str === "?" reverseString(str.subst(1)) + str.charAt(0) Panggilan ke-1 – reverseString("Hello") akan mengembalikan reverseString("ello") + "h" Panggilan ke-2 – reverseString("ello") akan mengembalikan reverseString("llo") + "e" Panggilan ke-3 – reverseString("llo") akan mengembalikan reverseString("lo") + "l" Panggilan ke-4 – reverseString("lo") akan mengembalikan reverseString("o") + "l" Panggilan ke-5 – reverseString("o") akan mengembalikan reverseString("") + "o" Bagian kedua dari metode rekursi Metode ini mencapai kondisi if dan panggilan yang paling dalam segera dikembalikan Panggilan ke-5 akan memngembalikan reverseString("") + "o" = "o" Panggilan ke-4 akan memngembalikan reverseString("o") + "l" = "o" + "l" Panggilan ke-3 akan memngembalikan reverseString("lo") + "l" = "o" + "l" + "l" Panggilan ke-2 akan memngembalikan reverserString("llo") + "e" = "o" + "l" + "l" + "e" Panggilan ke-1 akan memngembalikan reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ } reverseString("hello");Tidak ada komentar
function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");_Operator Bersyarat (Terner)
function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");_Membalikkan String dalam JavaScript adalah algoritme sederhana yang dapat ditanyakan selama penyaringan telepon teknis atau wawancara teknis. Anda dapat mengambil jalan pintas dalam menyelesaikan masalah ini, atau melakukan pendekatan dengan menyelesaikannya dengan rekursi atau bahkan solusi yang lebih kompleks
Jika Anda memiliki solusi atau saran sendiri, bagikan di bawah ini di komentar
Atau Anda dapat mengikuti saya di Medium, Twitter, Github, dan LinkedIn, tepat setelah Anda mengeklik hati hijau di bawah;
Sumber daya
- metode split() — MDN
- membalikkan () metode — MDN
- bergabung() metode — MDN
- Rangkaian. panjang — MDN
- metode substr() — MDN
- metode charAt() — MDN
IKLAN
IKLAN
IKLAN
🛡️ Melakukan hal-hal Cybersecurity. 🌟 Bintang GitHub. 💻 Wanita Epik di Cyber/Tek. 👩🎤 Duta GirlCode. 🥑 Advokat Keamanan DevSecOps/Cloud Baca lebih banyak posting
Jika Anda membaca sejauh ini, tweet ke penulis untuk menunjukkan bahwa Anda peduli. Tweet terima kasih
Belajar kode secara gratis. Kurikulum open source freeCodeCamp telah membantu lebih dari 40.000 orang mendapatkan pekerjaan sebagai pengembang. Memulai