Implementasi Algoritma String
Diperkenalkan| English | Makna |
|---|---|
| StringIndexOutOfBoundsException/strɪŋ ˈɪndeks ˈaʊtəv baʊndz ekˈsepʃn/ | StringIndexOutOfBoundsException |
Mengulang karakter
- Untuk memproses String, ulangi indeks-nya dari
0hinggalength() - 1. for (int i = 0; i < s.length(); i++) { ... s.substring(i, i+1) ... }s.substring(i, i+1)memberikan String satu-karakter pada indeksi.- Ini mengunjungi setiap karakter secara berurutan — dasar dari sebagian besar algoritma String.
Menghitung karakter
- Gabungkan perulangan dengan
ifuntuk menghitung karakter yang cocok. - "Hitung vokal": ulangi, dan
ifkarakter saat ini adalah vokal,count++. - Pola akumulator dari 2.9 berlaku langsung ke String.
- Bandingkan karakter dengan
.equals(), bukan==.
Membangun String baru
- Untuk mentransformasi teks, bangun String baru dengan
+, karena String bersifat tidak dapat diubah (immutable). String result = "";kemudianresult = result + something;di dalam perulangan.- "Balik String": lampirkan setiap karakter dari akhir menuju awal.
- Aslinya tidak pernah berubah — Anda mengakumulasi String segar.
Batas indeks
- Indeks valid berjalan
0hinggalength() - 1; melewati batas menyebabkan StringIndexOutOfBoundsException. s.substring(i, i+1)aman selamai < s.length().- Kondisi perulangan
i < s.length()menjagaidalam rentang. - Kesalahan batas off-by-one adalah bug perulangan String yang paling umum.
Ulangi indeks String dengan i < s.length(), bukan i <= s.length(). Indeks valid terakhir adalah length() - 1; menyentuh indeks length() menyebabkan StringIndexOutOfBoundsException. Dan bangun teks tertransformasi dengan mengakumulasi String baru (result += ch) — Anda tidak dapat mengedit String secara in-place, karena String bersifat tidak dapat diubah.
Menghitung vokal dalam s:
int count = 0;for (int i = 0; i < s.length(); i++) { String ch = s.substring(i, i+1); if ("aeiou".indexOf(ch) >= 0) count++; }- Mengunjungi setiap karakter; menghitungnya jika muncul dalam
"aeiou".
Proses String dengan mengulang indeksnya 0 hingga length()-1 (kondisi i < s.length()), baca setiap karakter dengan s.substring(i, i+1). Hitung dengan if, atau bangun String baru dengan mengakumulasi menggunakan + (String bersifat tidak dapat diubah). Tetap dalam batas menghindari StringIndexOutOfBoundsException.
Melingkari karakter-karakter dari HELLO
A loop visits indices 0 to length()-1.
Kondisi perulangan yang benar untuk mengunjungi setiap karakter String s adalah...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Valid indices are 0..length()-1, so i < s.length().
Mengakses index s.length() dari String memunculkan...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
The last valid index is length()-1.
To build a reversed String, since Strings are immutable, you...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Strings are immutable — build a fresh one.
Berapa banyak karakter yang dikunjungi perulangan untuk String "HELLO" (menggunakan i < length())?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Indices 0..4 → 5 characters.
Pola akumulator dari perulangan juga berlaku untuk menghitung karakter dalam sebuah String.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
count++ di dalam perulangan indeks menghitung karakter yang cocok.