Hari ini saya sedang mempraktikkan pertanyaan tentang Freecodecamp, dan saya menemukan pertanyaan tentang inversi string. Membalikkan string adalah salah satu pertanyaan wawancara umum di JavaScript. Mungkin pewawancara akan memberi Anda string "Halo Word!", Yang akan memungkinkan Anda untuk mengubahnya menjadi "! Drow Olleh" melalui JavaScript.
Saya juga seorang pemula. Saya telah lulus tes menggunakan pengetahuan yang terkait dengan array yang saya pelajari sebelumnya dan tips tentang pertanyaan. Kemudian saya bertanya -tanya, apakah ada cara lain untuk menyelesaikan masalah ini? Setelah mencari, masih ada banyak metode. Berikut adalah beberapa metode ini untuk digunakan nanti.
Hal -hal yang harus dilakukan
Hal -hal yang ingin kami lakukan:
Sebelum menampilkan string yang disediakan secara terbalik sebelum string terbalik, Anda perlu mengonversi string menjadi array dan hasil akhirnya masih merupakan string.
Selanjutnya, mari kita lihat metode apa yang dapat mencapai persyaratan di atas.
Menggunakan fungsi bawaan
Dalam latihan, kami diminta bahwa kami dapat menggunakan tiga metode untuk berhasil menampilkan string secara terbalik:
String.prototype.split () array.prototype.reverse () array.prototype.join ()
Pergi saja secara singkat:
Metode split () membagi setiap karakter dari objek string, dan memperlakukan setiap string sebagai setiap elemen dari suatu array, metode terbalik () untuk mengubah array, mengatur elemen dalam array dalam urutan terbalik, elemen array pertama menjadi yang terakhir, dan yang terakhir menjadi metode gabungan pertama () menghubungkan semua elemen dalam array ke dalam string ke dalam string
Mari kita lihat contoh:
function reversestring (str) {// Langkah pertama adalah menggunakan metode split () untuk mengembalikan array baru // var splitstring = "hello" .split (""); var splitstring = str.split (""); // Pisahkan string // kembalikan array baru ["h", "e", "l", "l", "l", "o"] // Langkah kedua adalah menggunakan metode reverse () untuk membuat array baru // var reverseArray = ["h", "e", "l", "l", "o"]. Reverse (); var reverseArray = splitstring.reverse (); // Elemen array asli dibalik secara berurutan ["o", "l", "l", "e", "h"] // Langkah ketiga adalah menggunakan metode gabungan () untuk bergabung dengan setiap elemen array dan menggabungkannya menjadi string baru // var goinarray = ["o", "l", "l", "", "h"]. var joinArray = reverseArray.join (""); // "Olleh" // Langkah keempat adalah mengembalikan string baru yang terbalik. Kembalikan rointarray; // "Olleh"} Reversestring ("Hello"); // => ollehSederhanakan metode di atas dan dapat ditulis seperti ini:
function reversestring (str) {return str.split (""). reverse (). gabungkan ("");} reversestring ("hello"); // => ollehMembalikkan string menggunakan traversal loop penurunan
Metode ini menggunakan for untuk melakukan traversal yang dikurangi ke string asli, dan kemudian merapikan kembali string yang dilintasi menjadi string baru:
function reversesstring (str) {// Langkah 1: Buat string kosong untuk menyimpan string var newstring yang baru dibuat = ""; // Langkah 2: Gunakan loop // loop mulai mengurangi traversal dari str.length-1 hingga i lebih besar dari atau sama dengan 0, loop akan berlanjut // str.length-1 sesuai dengan karakter terakhir dari string o untuk (var i = str.length-1; i> = 0; i--) {newstring += str. // atau newstring = newstring + str [i]; } // Langkah 3: Mengembalikan Newstring Return String Reversed; } reversestring ('hello'); // => // "Olleh"Pandangan sederhana pada proses traversal string. Misalkan Anda perlu membalikkan string "halo". Seluruh proses traversal ditunjukkan pada tabel berikut:
i yang sesuai Bahkan, loop for di atas juga dapat diganti dengan loop while :
function reversesstring (str) {var newstring = ''; var i = str.length; while (i> 0) {newstring += str.substring (i - 1, i); Saya--; } return Newstring;} Reversestring ("Hello"); // => olleh Metode substring() dalam while loop. substring() mengembalikan substring antara dua indeks string (atau ke ujung string).
Menerapkan inversi string menggunakan rekursi
String juga dapat dibalik menggunakan metode String.prototype.substr() dan String.prototype.charAt() .
Metode substr() mengembalikan substring pada string mulai dari posisi yang ditentukan ke panjang yang ditentukan. Misalnya:
var str = "abcdefghij"; console.log ("(1,2):" + str.substr (1,2)); // (1,2): bcdefghijconsole.log ("(-3,2):" + str.substr (-3,2)); // (-3,2): hiconsole.log ("(-3):" + str.substr (-3)); // (-3): hijconsole.log ("(1):" + str.substr (1)); // (1): bcdefghijconsole.log ("(-20, 2):" + str.substr (-20, 2)); // (-20, 2): abconsole.log ("(20, 2):" + str.substr (20, 2)); // (20, 2): Metode charAt() mengembalikan karakter pada posisi yang ditentukan dalam string. Karakter dalam string diindeks dari kiri ke kanan, karakter pertama memiliki nilai indeks 0 dan karakter terakhir (dengan asumsi bahwa karakter ada di String stringName ) memiliki nilai indeks stringName.length - 1 . Jika nilai index yang ditentukan berada di luar kisaran ini, string kosong dikembalikan.
var anystring = "Brave New World"; console.log ("Karakter pada indeks 0 adalah '" + anystring.charat (0) + "'"); // => Karakter pada indeks 0 adalah 'b'console.log ("Karakter pada indeks 1 adalah'" + anystring.charat (1) + "'"); // => Karakter pada indeks 1 adalah 'r'console.log ("Karakter pada indeks 2 adalah'" + anystring.charat (2) + "'"); // => Karakter pada indeks 2 adalah 'a'console.log ("Karakter pada indeks 3 adalah'" + anystring.charat (3) + "'"); // => Karakter pada indeks 3 adalah 'v'console.log ("Karakter pada indeks 4 adalah'" + anystring.charat (4) + "'"); // => Karakter pada indeks 4 adalah 'e'console.log ("Karakter pada indeks 999 adalah'" + anystring.charat (999) + "'"); // => Karakter pada indeks 999 adalah ''Gabungan, kita dapat melakukan ini untuk mengimplementasikan string inversi:
function reverSestring (str) {if (str === "") {return ""; } else {return reversestring (str.substr (1)) + str.charat (0); }} Reversestring ("Hello"); // => ollehBagian pertama dari metode rekursif. Anda perlu ingat bahwa Anda tidak akan hanya menyebutnya sekali, Anda akan memiliki beberapa panggilan bersarang.
Bagian 2 Metode Rekursif.
Metode di atas dapat ditingkatkan lebih lanjut dan diubah menjadi operator terner
function reversesstring (str) {return (str === '')? '': Reversestring (str.substr (1)) + str.charat (0);} reversestring ("hello"); // => ollehItu juga dapat diubah menjadi metode ini
function reversesstring (str) {return str && reversestring (str.substr (1)) + str [0];} reversestring ("hello"); // => ollehMetode lain
Selain metode di atas, sebenarnya ada beberapa metode lain:
Metode 1 Kode Kode Salin adalah sebagai berikut: function reverseString (str) { var newString = []; for (var i = str.length - 1, j = 0; i >= 0; i--, j++) { newString[j] = str[i]; } return newString.join('');}reverseString("hello"); // => olleh Metode 2 adalah sebagai berikut: function reverseString (str) { for (var i = str.length - 1, newString = ''; i >= 0; newString += str[i--] ) { } return newString;}reverseString("hello"); // => olleh adalah sebagai berikut: function reverseString (str) { function rev(str, len, newString) { return (len === 0) ? newString : rev(str, --len, (newString += str[len])); } return rev(str, str.length, '');}reverseString("hello"); // =>olleh adalah sebagai berikut: function reverseString (str) { str = str.split(''); var len = str.length, halfIndex = Math.floor(len / 2) - 1, newString; for (var i = 0; i <= halfIndex; i++) { newString = str[len - i - 1]; str[len - i - 1] = str[i]; str[i] = newString; } return str.join('');}reverseString("hello"); // => olleh Lima kode kode salin adalah sebagai berikut: function reverseString (str) { if (str.length < 2) { return str; } var halfIndex = Math.ceil(str.length / 2); return reverseString(str.substr(halfIndex)) + reverseString(str.substr(0, halfIndex));}reverseString("hello"); // =>olleh adalah sebagai berikut: function reverseString(str) { return [].reduceRight.call(str, function(prev, curr) { return prev + curr; }, '');}reverseString("hello"); // =>olleh ES6
Dalam ES6, itu bisa dibuat lebih sederhana, seperti:
[...str].reverse().join('');
atau [...str].reduceRight( (prev, curr) => prev + curr );
atau:
const reverse = str => str && reverse(str.substr(1)) + str[0];
Inversi string adalah algoritma kecil dan sederhana, seperti yang disebutkan sebelumnya, dan sering digunakan untuk mewawancarai javascript dasar. Anda dapat menggunakan metode di atas untuk menyelesaikan masalah ini, atau bahkan menggunakan solusi yang lebih kompleks. Jika Anda memiliki cara yang lebih baik, silakan tambahkan di komentar di bawah dan bagikan dengan kami.