0Pricing
Coding Interview Prep · Pelajaran

API String Python untuk Wawancara

Pelajari pola split, join, replace, find, ord/chr, dan pemformatan string yang muncul dalam soal wawancara tentang penguraian dan transformasi.

API String Python untuk Wawancara adalah pelajaran Coding Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Coding Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Teks Tidak Dapat Diubah dalam Python

Teks Python bersifat tidak dapat diubah — Anda tidak dapat mengubah karakter secara langsung di tempat. Setiap operasi teks yang tampak mengubah teks sebenarnya membuat teks baru. Artinya, s[0] = 'X' akan memunculkan TypeError. Saat memerlukan manipulasi langsung di tempat, ubah teks menjadi daftar karakter terlebih dahulu, lakukan pekerjaan Anda, lalu gunakan ''.join(chars) untuk membangunnya kembali. Ini adalah pola wawancara standar untuk soal perubahan teks.

s = 'hello'
# s[0] = 'H'  # TypeError!

# In-place mutation pattern:
chars = list(s)
chars[0] = 'H'
result = ''.join(chars)
print(result)  # 'Hello'

# Reversing a string
print(s[::-1])           # 'olleh'
print(''.join(reversed(s)))  # 'olleh'

split() dan join(): Mengurai dan Membangun

s.split(sep) memisahkan teks berdasarkan pembatas dan mengembalikan daftar subteks. sep=None (bawaan) memisahkan berdasarkan karakter spasi apa pun dan membuang teks kosong — ideal untuk mengurai masukan yang dipisahkan spasi. 'sep'.join(iterable) menggabungkan teks dengan pemisah di antaranya. Idiom ' '.join(words) adalah cara efisien untuk membangun teks yang dipisahkan spasi dari sebuah daftar — jangan pernah gunakan + dalam perulangan.

# split
sentence = '  hello   world  '
words = sentence.split()    # ['hello', 'world']
print(words)

csv = 'a,b,c,d'
parts = csv.split(',')      # ['a', 'b', 'c', 'd']
print(parts)

# join
print(' '.join(words))      # 'hello world'
print(','.join(['x','y','z']))  # 'x,y,z'

# Reverse words in a sentence
print(' '.join(sentence.split()[::-1]))  # 'world hello'

find(), index(), dan in

s.find(sub) mengembalikan indeks kemunculan pertama sub, atau -1 jika tidak ditemukan. s.index(sub) melakukan hal yang sama tetapi memunculkan ValueError jika tidak ada — gunakan find dalam kode wawancara untuk menghindari pengecualian yang tidak ditangani. Operator in untuk teks melakukan pencarian subteks O(n×m), sama seperti find. Gunakan parameter opsional start dan end untuk mencari di dalam irisan tanpa menyalin teks.

s = 'abcabcabc'
print(s.find('bc'))          # 1  (first occurrence)
print(s.find('bc', 2))       # 4  (search from index 2)
print(s.find('xyz'))         # -1 (not found)
print('abc' in s)            # True

# Count occurrences manually
count = 0
start = 0
while True:
    idx = s.find('bc', start)
    if idx == -1: break
    count += 1
    start = idx + 1
print(count)  # 3

replace(), strip(), dan Metode Huruf Besar-Kecil

s.replace(old, new, count=-1) mengembalikan teks baru dengan semua kemunculan (atau count kemunculan pertama) yang diganti. s.strip() menghapus spasi kosong di awal dan akhir (atau karakter yang ditentukan). Metode huruf besar-kecil lower(), upper(), capitalize(), dan swapcase() membuat teks baru — ingat bahwa metode-metode ini mengembalikan nilai, bukan mengubah teks asal. Menormalkan besar-kecil huruf sebelum perbandingan sangat penting untuk soal yang tidak membedakan huruf besar-kecil.

s = '  Hello, World!  '
print(s.strip())          # 'Hello, World!'
print(s.strip().lower())  # 'hello, world!'

print('banana'.replace('a', 'o'))   # 'bonono'
print('banana'.replace('a', 'o', 2)) # 'bonona'

# Normalise for comparison
def same_ignoring_case(a, b):
    return a.lower() == b.lower()

print(same_ignoring_case('Racecar', 'racecar'))  # True

startswith(), endswith(), dan isalnum()

Metode predikat teks mengembalikan nilai benar atau salah dan memiliki kompleksitas O(k), dengan k sebagai panjang pola. s.startswith(prefix) dan s.endswith(suffix) menerima tupel untuk beberapa alternatif. s.isalpha(), s.isdigit(), s.isalnum(), dan s.isspace() memeriksa kelas karakter. Metode-metode ini digunakan dalam soal wawancara tentang palindrom valid, angka valid, dan penguraian URL.

print('hello'.startswith('hel'))   # True
print('hello'.endswith(('lo', 'la')))  # True

# isalnum for palindrome filtering
def clean(s):
    return ''.join(c.lower() for c in s if c.isalnum())

print(clean('A man, a plan, a canal: Panama'))
# 'amanaplanacanalpanama'
print(clean('123abc!@#'))
# '123abc'

ord(), chr(), dan Aritmetika ASCII

ord(c) mengembalikan titik kode Unicode dari karakter c. chr(n) mengubah bilangan bulat kembali menjadi karakter. Untuk huruf kecil, ord(c) - ord('a') menghasilkan 0–25 — cara sederhana untuk membangun larik frekuensi berukuran tetap 26 tanpa peta hash, yang dalam praktiknya lebih cepat untuk alfabet Inggris. Teknik ini muncul dalam soal anagram dan palindrom.

print(ord('a'))   # 97
print(ord('z'))   # 122
print(chr(65))    # 'A'

# Frequency array for lowercase letters
def char_freq(s):
    freq = [0] * 26
    for c in s:
        freq[ord(c) - ord('a')] += 1
    return freq

print(char_freq('anagram'))  # [3,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0]
# index 0='a'(3), 6='g'(1), 12='m'(1), 17='r'(1)

Pemformatan Teks untuk Keluaran

Dalam wawancara pemrograman, keluaran yang rapi terkadang penting. Python menyediakan tiga gaya pemformatan: pemformatan dengan % (lama), .format() (klasik), dan string-f (modern, lebih disarankan). String-f paling mudah dibaca dan mendukung ekspresi secara langsung: f'{value:.2f}' memformat bilangan pecahan hingga 2 angka di belakang koma. Mengetahui cara memformat angka, memberi bantalan pada teks, dan mencetak tabel dengan cepat dapat mengurangi waktu penelusuran kesalahan saat berada di bawah tekanan.

name = 'Alice'
score = 95.678

# f-string (preferred in interviews)
print(f'{name}: {score:.1f}')      # Alice: 95.7
print(f'{name:>10}: {score:05.1f}') # right-align

# Zero-pad an integer
print(f'{42:04d}')   # 0042

# Join and format a list
nums = [1, 2, 3, 4]
print(', '.join(str(n) for n in nums))  # '1, 2, 3, 4'

Membangun Teks secara Efisien dengan join()

Penggabungan teks dengan + dalam perulangan membuat teks baru pada setiap iterasi, sehingga membutuhkan total waktu O(n²) untuk n karakter. Pola yang benar: gunakan append untuk menambahkan bagian-bagian ke sebuah daftar, lalu panggil ''.join(parts) di akhir, yang membutuhkan O(n). Ini adalah salah satu antipola kinerja Python yang paling umum. Dalam wawancara, menyebutkan pertukaran ini menunjukkan bahwa Anda memahami model memori Python.

# SLOW: O(n^2) due to repeated string allocation
def build_bad(chars):
    s = ''
    for c in chars:
        s += c  # creates a new string each time!
    return s

# FAST: O(n)
def build_good(chars):
    parts = []
    for c in chars:
        parts.append(c)
    return ''.join(parts)  # single allocation

# Or even more concise:
def build_best(chars):
    return ''.join(chars)

print(build_best(['h','e','l','l','o']))  # 'hello'

Mengurai Bilangan Bulat dan Bilangan Pecahan dari Teks

Konversi antara teks dan angka merupakan dasar soal penguraian. int(s) dan float(s) mengurai teks numerik; keduanya memunculkan ValueError untuk masukan yang tidak valid. Untuk penguraian yang lebih aman, gunakan blok percobaan dan penanganan pengecualian. Metode teks isdigit() dan isnumeric() memvalidasi masukan terlebih dahulu sebelum konversi. Soal seperti atoi (teks menjadi bilangan bulat) mengharuskan Anda menangani spasi di awal, tanda bilangan, dan luapan.

def my_atoi(s):
    s = s.lstrip()  # remove leading spaces
    if not s: return 0
    sign = 1
    idx = 0
    if s[0] in '-+':
        sign = -1 if s[0] == '-' else 1
        idx = 1
    num = 0
    while idx < len(s) and s[idx].isdigit():
        num = num * 10 + int(s[idx])
        idx += 1
    result = sign * num
    INT_MAX, INT_MIN = 2**31 - 1, -(2**31)
    return max(INT_MIN, min(INT_MAX, result))

print(my_atoi('   -42'))          # -42
print(my_atoi('4193 with words'))  # 4193

Pemotongan Teks dalam Soal Algoritme

Pemotongan teks sering digunakan, tetapi memiliki biaya tersembunyi: s[i:j] membuat teks baru sepanjang j-i dalam waktu O(j-i). Saat perlu meneruskan subteks ke fungsi rekursif, pertimbangkan untuk meneruskan indeks (start, end), bukan subteks sebenarnya, agar terhindar dari biaya tambahan alokasi O(n²). Optimasi ini penting dalam soal seperti subteks palindrom terpanjang, ketika banyak subteks diuji.

# Naive: O(n^3) because slicing inside nested loops
def is_palindrome_naive(s):
    return s == s[::-1]  # O(n) slice + O(n) compare

# Pass indices to avoid allocating substrings
def is_palindrome_range(s, left, right):
    while left < right:
        if s[left] != s[right]:
            return False
        left += 1; right -= 1
    return True  # O(right-left) time, O(1) space

print(is_palindrome_range('racecar', 0, 6))  # True
print(is_palindrome_range('hello',   0, 4))  # False

Referensi Cepat Teks untuk Wawancara

Simpan metode teks berikut dalam ingatan untuk wawancara:

  • split / join — mengurai dan membangun
  • strip / lstrip / rstrip — memangkas spasi kosong
  • lower / upper — menormalkan kapitalisasi
  • find / index — menemukan subteks
  • replace — penggantian
  • isalnum / isalpha / isdigit — pemeriksaan kelas karakter
  • ord / chr — aritmetika ASCII untuk masalah dengan alfabet terbatas
  • startswith / endswith — pemeriksaan awalan/akhiran

# Combining methods: reverse words, preserve spaces
def reverse_words(s):
    return ' '.join(reversed(s.split()))

print(reverse_words('  hello   world  '))
# 'world hello'

# Check anagram using sorted strings
def is_anagram(s, t):
    return sorted(s) == sorted(t)

print(is_anagram('anagram', 'nagaram'))  # True
print(is_anagram('rat', 'car'))          # False

Uji Singkat

Ujilah pemahaman Anda tentang konsep Struktur Data & Algoritma — Persiapan Wawancara Pemrograman dari pelajaran ini.

Rangkuman Pelajaran

Dalam pelajaran ini Anda mempelajari: teks Python tidak dapat diubah — perubahan mengharuskan Anda mengonversinya menjadi daftar, memodifikasinya, lalu menggabungkannya kembali, ord/chr memungkinkan penggunaan larik frekuensi berukuran tetap dengan 26 elemen untuk masalah huruf kecil, yang lebih cepat daripada peta hash untuk alfabet terbatas, dan membangun teks dengan + di dalam perulangan memerlukan biaya O(n²) — selalu kumpulkan dalam daftar dan gunakan ''.join() di akhir untuk memperoleh O(n). Selanjutnya kita akan mempelajari teknik jendela geser untuk masalah subteks.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “API String Python untuk Wawancara” gratis?

Ya — teks lengkap “API String Python untuk Wawancara” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Coding Interview Prep, upgrade ke CoddyKit PRO. Kursus Coding Interview Prep mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “API String Python untuk Wawancara”?

Pelajari pola split, join, replace, find, ord/chr, dan pemformatan string yang muncul dalam soal wawancara tentang penguraian dan transformasi. Kamu berlatih Coding Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Coding Interview Prep?

Tidak diperlukan pengalaman sebelumnya. Coding Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “API String Python untuk Wawancara” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Coding Interview Prep ini?

Ya. Setiap pelajaran Coding Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API String Python untuk Wawancara
  2. Sliding Window untuk Substring
  3. Anagram dan Peta Frekuensi Karakter
  4. Pengodean String, Pembalikan, dan Palindrome
← Kembali ke Coding Interview Prep