Tiga Cara Membalikkan String di JavaScript

Artikel ini didasarkan pada Skrip Algoritme Dasar Camp Kode Gratis "Membalikkan String"

Membalikkan string adalah salah satu pertanyaan JavaScript yang paling sering diajukan dalam putaran teknis wawancara. 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.

Ada kemungkinan puluhan cara berbeda untuk melakukannya, tidak termasuk fungsi terbalik bawaan, karena JavaScript tidak memilikinya.

Di bawah ini adalah tiga cara saya yang paling menarik untuk memecahkan masalah membalikkan string di JavaScript.

Tantangan Algoritma

Balikkan string yang disediakan.

Anda mungkin perlu mengubah string menjadi array sebelum dapat membalikkannya.

Hasil Anda harus berupa string.

function reverseString(str) { return str; } reverseString("hello");

Kasus uji yang disediakan

  • reverseString (“halo”) harus menjadi “olleh”
  • reverseString ("Howdy") harus menjadi "ydwoH"
  • reverseString ("Greetings from Earth") harus mengembalikan "htraE morf sgniteerG"

1. Membalikkan String Dengan Fungsi Bawaan

Untuk solusi ini, kita akan menggunakan tiga metode: metode String.prototype.split (), metode Array.prototype.reverse () dan metode Array.prototype.join ().

  • Metode split () membagi objek String menjadi array string dengan memisahkan string menjadi sub string.
  • Metode reverse () membalikkan larik pada tempatnya. Elemen larik pertama menjadi yang terakhir dan yang terakhir menjadi yang pertama.
  • Metode join () menggabungkan semua elemen array menjadi string.
function reverseString(str) { // Step 1. Use the split() method to return a new array var splitString = str.split(""); // var splitString = "hello".split(""); // ["h", "e", "l", "l", "o"] // Step 2. Use the reverse() method to reverse the new created array var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); // ["o", "l", "l", "e", "h"] // Step 3. Use the join() method to join all elements of the array into a string var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join(""); // "olleh" //Step 4. Return the reversed string return joinArray; // "olleh" } reverseString("hello");

Merangkai ketiga metode bersama:

function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");

2. Membalikkan String Dengan Decrementing For Loop

function reverseString(str) { // Step 1. Create an empty string that will host the new created string var newString = ""; // Step 2. Create the FOR loop /* The starting point of the loop will be (str.length - 1) which corresponds to the last character of the string, "o" As long as i is greater than or equals 0, the loop will go on We decrement i after each iteration */ for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; // or newString = newString + str[i]; } /* Here hello's length equals 5 For each iteration: i = str.length - 1 and newString = newString + str[i] First iteration: i = 5 - 1 = 4, newString = "" + "o" = "o" Second iteration: i = 4 - 1 = 3, newString = "o" + "l" = "ol" Third iteration: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" Fourth iteration: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" Fifth iteration: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" End of the FOR Loop*/ // Step 3. Return the reversed string return newString; // "olleh" } reverseString('hello');

Tanpa komentar:

function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');

3. Membalik String Dengan Rekursi

Untuk solusi ini, kita akan menggunakan dua metode: metode String.prototype.substr () dan metode String.prototype.charAt ().

  • Metode substr () mengembalikan karakter dalam string yang dimulai di lokasi yang ditentukan melalui jumlah karakter yang ditentukan.
"hello".substr(1); // "ello"
  • Metode charAt () mengembalikan karakter yang ditentukan dari string.
"hello".charAt(0); // "h"

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 === "") // This is the terminal case that will end the recursion return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: str === "?" reverseString(str.subst(1)) + str.charAt(0) 1st call – reverseString("Hello") will return reverseString("ello") + "h" 2nd call – reverseString("ello") will return reverseString("llo") + "e" 3rd call – reverseString("llo") will return reverseString("lo") + "l" 4th call – reverseString("lo") will return reverseString("o") + "l" 5th call – reverseString("o") will return reverseString("") + "o" Second part of the recursion method The method hits the if condition and the most highly nested call returns immediately 5th call will return reverseString("") + "o" = "o" 4th call will return reverseString("o") + "l" = "o" + "l" 3rd call will return reverseString("lo") + "l" = "o" + "l" + "l" 2nd call will return reverserString("llo") + "e" = "o" + "l" + "l" + "e" 1st call will return reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ } reverseString("hello");

Tanpa komentar:

function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Operator Bersyarat (Ternary):

function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Membalikkan String di JavaScript adalah algoritme kecil dan sederhana yang dapat ditanyakan pada penyaringan telepon teknis atau wawancara teknis. Anda dapat mengambil jalan pintas dalam memecahkan masalah ini, atau mengambil pendekatan dengan menyelesaikannya dengan rekursi atau bahkan solusi yang lebih kompleks.

Saya harap ini bermanfaat bagi Anda. Ini adalah bagian dari seri artikel “Cara Memecahkan Algoritme FCC” saya tentang Tantangan Algoritme Kamp Kode Gratis, di mana saya mengusulkan beberapa solusi dan menjelaskan langkah demi langkah apa yang terjadi di balik terpal.

Tiga cara untuk mengulang string dalam JavaScript

Dalam artikel ini, saya akan menjelaskan cara menyelesaikan tantangan "Repeat a string repeat a string" freeCodeCamp. Ini melibatkan…

Dua cara untuk mengonfirmasi akhir dari String di JavaScript

Dalam artikel ini, saya akan menjelaskan cara menyelesaikan tantangan "Konfirmasi Akhir" dari freeCodeCamp.

Tiga Cara Memfaktorialisasi Angka dalam JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Faktorialisasi Nomor"

Dua Cara untuk Memeriksa Palindrom di JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Periksa Palindrom".

Tiga Cara untuk Menemukan Kata Terpanjang dalam String di JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Free Code Camp "Temukan Kata Terpanjang dalam String".

Tiga Cara untuk Judul Kasus Kalimat dalam JavaScript

Artikel ini didasarkan pada Skrip Algoritma Dasar Camp Kode Gratis "Judul Kasus Kalimat".

Jika Anda memiliki solusi atau saran Anda sendiri, bagikan di bawah di komentar.

Atau Anda dapat mengikuti saya di Medium , Twitter, Github dan LinkedIn , tepat setelah Anda mengklik ikon hati hijau di bawah ;-)

‪#‎StayCurious‬, ‪#‎KeepOnHacking‬ & ‪#‎MakeItHappen‬!

Resources

  • split() method — MDN
  • reverse() method — MDN
  • join() method — MDN
  • String.length — MDN
  • substr() method — MDN
  • charAt() method — MDN