Pendekatan berbeda untuk menyelesaikannya dalam JavaScript

Pernahkah Anda mendapati diri Anda menatap seutas tali, bertanya-tanya bagaimana cara membalikkan urutannya? Hari ini, kita akan mengeksplorasi banyak pendekatan yang dapat diambil untuk menyelesaikannya termasuk dua petunjuk. Jika Anda tidak terbiasa dengan dua penunjuk, jangan khawatir, ini adalah cara cerdas untuk memanipulasi array (dan string!) yang melibatkan pelacakan dua indeks sekaligus. Dan jangan khawatir, saya berjanji untuk tidak terlalu tajam dalam penjelasan saya (saya tidak bisa menahan permainan kata-kata). Jadi, duduk, santai, dan mari selami!

Pernyataan masalah:

Tulis fungsi yang membalikkan string.

Pendekatan 1: Kekerasan

  1. Kita dapat membuat string kosong, lalu mengulang string masukan dari akhir ke awal dan menggabungkan setiap karakter ke string baru.
// ES6 Arrow Function
const reverseString = str => {
    let reversed = '';

    for(let i = str.length; i >= 0; i--) {
        reverseString += str[i];
    }

    return reverseString;
}

Kompleksitas Waktu:O(N)

Kompleksitas Ruang:O(N)

Pendekatan 2: Dua Petunjuk

  1. Kita dapat menggunakan dua pointer, satu dimulai dari awal string dan satu lagi dimulai dari akhir.
  2. Kami menukar karakter di setiap indeks hingga dua penunjuk bertemu di tengah.
  3. Catatan:Elemen pada setiap penunjuk ditukar menggunakan penghancuran struktur array.
// ES6 Arrow Function
const reverseString = str => {
    let i = 0, j = str.length - 1;

    while(i <= j) {
        [str[i], str[j]] = [str[j], str[i]];
        i++;
        j--;
    }

    return str;
}

Kompleksitas Waktu:O(N)

Kompleksitas Ruang:O(1)

Catatan:Selain pendekatan dua petunjuk, ada dua metode lain untuk memecahkan masalah ini dalam JavaScript: menggunakan metode bawaan dan menggunakan rekursi. Meskipun kedua metode ini memiliki kompleksitas ruang dan waktu dengan tatanan linier, metode yang paling efisien adalah pendekatan dua penunjuk. Meski demikian, demi kelengkapan, solusi untuk kedua metode tersebut juga disajikan di bawah ini.

Pendekatan 3: Metode Bawaan

  1. JavaScript menyediakan metode bawaan yang disebut reverse() yang dapat digunakan untuk membalikkan array.
  2. Karena string dalam JavaScript dapat diperlakukan seperti array karakter, kita dapat mengubah string menjadi array, membalikkan array, dan kemudian mengubahnya kembali menjadi string.
// ES6 Arrow Function
const reverseString = str => {
    return str.split('').reverse().join('');
}

Kompleksitas Waktu:O(N)

Kompleksitas Ruang:O(N)

Pendekatan 4: Rekursi

Kita dapat membalikkan substring yang mengecualikan karakter pertama secara rekursif, lalu menggabungkan karakter pertama di akhir.

// ES6 Arrow Function
const reverseString = str => {
    if(str === '') return '';
    else return reverseString(str.substr(1)) + str.charAt(0);
}

Kompleksitas Waktu:O(N)

Kompleksitas Ruang:O(N)

Dan begitulah teman-teman! Kami telah mengeksplorasi berbagai pendekatan, mengoptimalkan solusi kami, dan semoga dapat bersenang-senang selama prosesnya. Saya harap artikel ini memberi Anda wawasan berharga dan membantu Anda lebih memahami berbagai pendekatan untuk memecahkan masalah ini. Selamat membuat kode!