Beli Modem Wavecom Untuk SMS Gateway. FREE E-book Gammu + FREE Ongkos kirim !!
Ingin Punya Script SMS Gateway dengan PHP + MySQL?

Dapatkan segera phpSMS V3.0, software SMS Gateway multi fungsi berbasis web buatan saya sendiri untuk keperluan Anda.
[Info Lengkap...]

Algoritma Membalik String (String Reverse)


December 20th, 2008 | by rosihanari | Cetak Artikel Ini Cetak Artikel Ini

Artikel ini didasari pada pertanyaan mas Tedy Winanto (sobat saya di YM). Teman saya ini bingung bagaimana caranya membalik suatu string. Dan.. karena saya telah menjanjikan pada mas Tedy kalau saya sempat, saya akan posting di blog saya ini bagaimana algoritma membalik string ini dan implementasinya ke program/script, maka saat inilah saya akan memenuhi janjinya.

OK… misalkan diberikan suatu string ‘KOMPUTER’, dan kita ingin membalik string tersebut sehingga menjadi ‘RETUPMOK’, bagaimana algoritmanya?

Ya… secara logika untuk membalik suatu string dengan panjang karakter sejumlah n, cukup menukar posisi karakter ke – 1 dengan karakter ke-n, dan karakter ke-2 ditukar posisi dengan karakter ke n-1, dst. Sekarang yang menjadi masalah adalah… sampai berapa kali proses penukaran ini dilakukan, apakah n kali? Coba kita cek proses ini bila diterapkan pada string ‘KOMPUTER’ tsb, dalam hal ini n = 8 (panjang string 8 karakter).

Penukaran ke-1, tukar posisi karakter ke-1 dg ke-8, hasilnya ‘ROMPUTEK
Penukaran ke-2, tukar posisi karakter ke-2 dg ke-7, hasilnya ‘REMPUTOK’
Penukaran ke-3, tukar posisi karakter ke-3 dg ke-6, hasilnya ‘RETPUMOK’
Penukaran ke-4, tukar posisi karakter ke-4 dg ke-5, hasilnya ‘RETUPMOK’
Penukaran ke-5, tukar posisi karakter ke-5 dg ke-4, hasilnya ‘RETPUMOK’
Penukaran ke-6, tukar posisi karakter ke-6 dg ke-3, hasilnya ‘REMPUTOK’
Penukaran ke-7, tukar posisi karakter ke-7 dg ke-2, hasilnya ‘ROMPUTEK’
Penukaran ke-8, tukar posisi karakter ke-8 dg ke-1, hasilnya ‘KOMPUTER

Bila proses penukaran dilakukan n kali, ternyata hasil akhir string tetap kembali ke string semula. So… salah donk. Dengan demikian, kita tidak bisa menulis algoritmanya sbb:

{ x adalah string yang akan ditukar }
n := length(x); { n = panjang string }
for i = 1 to n do
begin
    // tukar antara karakter ke-i dengan karakter ke- (n+1-i)
    temp := x[i];
    x[i] := x[n+1-i];
    x[n+1-1] := x[i];
end;

Jadi… sampai berapa kali proses penukarannya? Anda perhatikan pada proses penukaran tahap demi tahap di atas. Pada langkah berapakah stringnya menjadi ‘RETUPMOK’? Ya tepat sekali, yaitu pada langkah ke-4.

OK… dari contoh ini bisa kita catat, bahwa untuk n = 8, kita butuh 4 kali langkah penukaran. Sekarang bagaimana bila n = 10? Coba selidiki… dan ternyata butuh 5 kali penukaran. Nah… dari sini bisa kita simpulkan bahwa untuk n genap, proses penukaran yang dibutuhkan ada n/2 kali.

Sekarang bagaimana dengan n ganjil? Kita ambil contoh misal n = 7. Berapakah jumlah proses penukarannya? Coba selidiki… dan ternyata butuh 3 kali. Lho apa tidak 4 kali? Mmmm… untuk yang ke-4 boleh kita tidak lakukan karena karakter ke-4 adalah karakter yang berada di tengah string, so… gak perlu ditukar. Untuk n = 9, akan butuh 4 kali penukaran. dan seterusnya… Dengan demikian untuk n ganjil, proses penukaran yang dilakukan juga sejumlah n/2 kali, tapi n/2 di sini dibulatkan ke bawah.

Untuk n genap pun, jumlah proses penukaran karakter juga dapat diterapkan pembulatan ke bawah dari n/2, karena misal n= 8, dan hasil n/2 kalau dibulatkan ke bawah juga menghasilkan 4.

So… algoritma yang benar untuk membalik string adalah:

{ x adalah string yang akan ditukar }
n := length(x); { n = panjang string }
for i = 1 to floor(n/2) do {maksud floor adalah pembulatan ke bawah}
begin
    // tukar antara karakter ke-i dengan karakter ke- (n+1-i)
    temp := x[i];
    x[i] := x[n+1-i];
    x[n+1-1] := x[i];
end;

Nah… sekarang kita implementasikan algoritma di atas ke PHP. Bagaimana bentuk script untuk membalik string? O… iya… ingat bahwa dalam PHP, karakter pertama dari suatu string itu dimulai dari nomor indeks ke-0, sehingga harap hati-hati. Ini dia scriptnya:

<?php

$x = 'KOMPUTER';
$n = strlen($x);
for ($i = 0; $i<=floor(($n-1)/2); $i++)
{
	$temp = $x[$i];
	$x[$i] = $x[$n-1-$i];
	$x[$n-1-$i] = $temp;
}

echo $x;
?>

dan ini dia implementasi ke dalam program Pascal

program balikstring;
var x : string; i, n : integer; temp : char;
begin
    x := 'KOMPUTER';
    n := length(x);
    for i:=1 to trunc(n/2) do
    begin
        temp := x[i];
        x[i] := x[n+1-i];
        x[n+1-1] := x[i];
    end;
    write(x);
end.

OK deh…. demikian algoritma untuk membalik string. Mudah-mudahan ada manfaatnya.

Eh… sebelum di tutup artikel ini, cobalah cek apakah algoritma simpel berikut ini juga bisa digunakan untuk membalik string?

{ x adalah string yang akan ditukar }
n := length(x); { n = panjang string }
for i = 1 to n do
begin
    x[i] := x[n+1-i];
end;

Mmmm…. secara sekilas sih ‘kayaknya’ bisa. Tapi kalau Anda yakin jawabannya ‘bisa’, silakan buat ke dalam program algoritma tersebut dan lihatlah hasilnya. Tentu hasilnya di luar dugaan dan Anda akan dibuat tercengang dibuatnya. Kok bisa ya? :-)

Oya, satu lagi, khusus di PHP, Anda tidak perlu repot-repot membuat script untuk membalik string karena telah disediakan function khusus untuk melakukan hal itu. Function yang dimaksud adalah strrev(). Berikut ini contoh penggunaannya:

<?php
echo strrev("Hello world!"); // outputnya "!dlrow olleH"
?>

OK… met membolak-balik string ya.

VN:F [1.9.3_1094]
Rating: 0.0/10 (0 votes cast)

Anda ingin mendownload beberapa tool programming 100% gratis?
Silakan download di FREE PROGRAMMING TOOLS.
atau ingin berdonasi untuk pengembangan blog ini cukup dengan $1 via Paypal?



Beberapa artikel terkait


Share this article on:

Kata kunci: algoritma - reverse - string -


Ada 15 komentar dalam artikel ini.

  1. TedyWinanto says:

    Thanx berat pak… mantab nich jawabannya,Padet banget… semoga selalu di beri kesehatan dan rizky yang lancar pak
    aminnn

  2. bias says:

    mumet, memutar balikkan string
    maibi isoh dadi alogaritma ya mas, hehehehe
    alogaritma enskripsi n deskripsi :D

    :wong pekok kakean omong, mlayu weh:

  3. TedyWinanto says:

    terima kasih mas atas ilmunya ini :D

  4. angel says:

    Hello Pak

    aku mahasiswi dan sedang tugas akhir..
    aku mau nanya nich, emang klo algoritma membalik string (string reverse diatas) implementasinya buat apa yach?

    bisa di deskripsi gak.. biasanya dipake dalam kasus apa ja.. ^^

    Thanx ya Pak..
    Angel..

  5. rosihanari says:

    to angel: aplikasinya bisa buat ngecek apakah suatu string termasuk palindrom atau bukan (palindrom itu string yang dibaca dari depan dan dari belakang sama)

  6. ariel says:

    Pak, saya mau nanya nee,
    Kalo algoritmanya kaya gini bisa ga’??

    Var
    kata:string;
    Procedure balik(s:string);
    var
    i,n:integer;
    begin
    n:= length(s);
    for i:= n downto 1 do write(s[i]);
    end;
    { Program Utama }
    Begin
    write(‘Masukkan sebuah kata : ‘);
    readln(kata);
    write (kata,’ dibalik : ‘);
    balik(kata);
    readln;
    end.

  7. rosihanari says:

    to ariel: bisa saja, namun yang anda balik adalah tampilannya di layar ketika dirun, namun string ‘kata’ sendiri kan tidak terbalik isinya. Paham maksud saya ya.. Jadi yang saya balik di sini adalah susunan huruf dalam stringnya, bukan di tampilannya dengan membaca string dari belakang.

  8. ariel says:

    Makasi banyak ya pak, saya paham..
    God Bless

  9. ariel says:

    Sorry pak, saya mau nanya lagi nee…
    Gimana cara kita membedakan sebuah file teks dan biner dengan menggunakan fungsi assign, mohon penerangannya…

  10. rosihanari says:

    to ariel: wah saya belum pernah nyoba mas

  11. DE says:

    Pak, mw nanya nih..
    saya anak sma, nyoba” pascal. gmn y algoritmanya fungsi floor yg ngbuletin angka ke bawah tu?

  12. rosihanari says:

    @DE: gunakan function trunc() saja dik…

  13. vibie says:

    Makasih infonya,Pak..
    Kalau bikin program gini gimana??
    input : VIBIE
    output: EIBIV
    Kemaren pas ulangan gag bisa.Masih penasaran gitu,Pak…
    Maturnuwn…>_<

  14. rosihanari says:

    @vibie: kan penjelasannya sudah ada di atas?

  15. heri says:

    Pak….. Saya mau tanya….
    kalau membalik string tapi dua konsonan yang berurutan tidak dibalik itu pakainya program apa???
    misalnya mau membalik kata MALANG menjadi NGALAM bukan jadi GNALAM…. Mohon Penjelasannya…



Tolong beri komentar donk!

Komentar Anda akan berguna untuk kemajuan blog ini.


Mohon maaf, komentar yang menggunakan email palsu atau komentar bernada negatif atau cemooh secara otomatis akan terhapus karena dianggap spam dan tidak akan tampil dalam daftar komentar.

Dimohon jangan pula memasukkan code program dalam bentuk apapun ke dalam komentar karena akan dianggap spam.

*
To prove you're a person (not a spam script), type the security word shown in the picture. Click on the picture to hear an audio file of the word.
Click to hear an audio file of the anti-spam word