Python-String-API für Interviews
Arbeiten Sie die in Interviewaufgaben zur Analyse und Transformation verwendeten Muster mit split, join, replace, find, ord/chr und String-Formatierung durch.
Python-String-API für Interviews ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Strings sind in Python unveränderlich
Python-Strings sind unveränderlich — Sie können ein Zeichen nicht direkt ändern. Jede String-Operation, die scheinbar einen String verändert, erstellt tatsächlich einen neuen. Daher löst s[0] = 'X' einen TypeError aus. Wenn Sie eine direkte Bearbeitung benötigen, wandeln Sie den String zunächst in eine Zeichenliste um, führen Sie Ihre Änderungen durch und setzen Sie ihn anschließend mit ''.join(chars) wieder zusammen. Dies ist das Standardmuster für Interviewaufgaben zur Veränderung von Strings.
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() und join(): Parsen und Erstellen
s.split(sep) teilt einen String anhand eines Trennzeichens auf und gibt eine Liste von Teilstrings zurück. sep=None (Standard) teilt an beliebigen Leerraumzeichen auf und verwirft leere Strings — ideal zum Parsen von durch Leerzeichen getrennten Eingaben. 'sep'.join(iterable) verkettet Strings und setzt dazwischen ein Trennzeichen. Das Idiom ' '.join(words) ist die effiziente Methode, aus einer Liste einen durch Leerzeichen getrennten String zu erstellen — verwenden Sie niemals + in einer Schleife.
# 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() und in
s.find(sub) gibt den Index des ersten Vorkommens von sub zurück oder -1, wenn es nicht gefunden wird. s.index(sub) macht dasselbe, löst aber ValueError aus, wenn sub nicht vorhanden ist — bevorzugen Sie in Interviewcode find, um unbehandelte Ausnahmen zu vermeiden. Der Operator in für Strings führt eine Teilstringsuche in O(n×m) durch, genau wie find. Verwenden Sie die optionalen Parameter start und end, um innerhalb eines Ausschnitts zu suchen, ohne ihn zu kopieren.
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) # 3replace(), strip() und Methoden zur Groß-/Kleinschreibung
s.replace(old, new, count=-1) gibt einen neuen String zurück, in dem alle Vorkommen oder die ersten count Vorkommen ersetzt wurden. s.strip() entfernt führende und nachfolgende Leerraumzeichen oder angegebene Zeichen. Die Methoden zur Groß-/Kleinschreibung lower(), upper(), capitalize() und swapcase() erstellen neue Strings — denken Sie daran, ihre Rückgabewerte zu speichern, denn sie verändern den String nicht. Das Vereinheitlichen der Groß-/Kleinschreibung vor einem Vergleich ist für Probleme ohne Beachtung der Groß-/Kleinschreibung unerlässlich.
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')) # Truestartswith(), endswith() und isalnum()
Prädikatmethoden für Strings geben boolesche Werte zurück und benötigen O(k), wobei k die Länge des Musters ist. s.startswith(prefix) und s.endswith(suffix) akzeptieren Tupel für mehrere Alternativen. s.isalpha(), s.isdigit(), s.isalnum() und s.isspace() prüfen Zeichenklassen. Diese Methoden werden in Interviewaufgaben zur Prüfung gültiger Palindrome, gültiger Zahlen und zum Parsen von URLs verwendet.
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() und ASCII-Arithmetik
ord(c) gibt den Unicode-Codepunkt des Zeichens c zurück. chr(n) wandelt eine Ganzzahl wieder in ein Zeichen um. Für Kleinbuchstaben ergibt ord(c) - ord('a') Werte von 0 bis 25 — eine übersichtliche Methode, Häufigkeitsarrays mit der festen Größe 26 ohne Hashmap zu erstellen. In der Praxis ist sie für das englische Alphabet schneller. Diese Technik tritt bei Anagramm- und Palindromproblemen auf.
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)String-Formatierung für die Ausgabe
Bei Coding-Interviews kann eine übersichtliche Ausgabe manchmal wichtig sein. Python bietet drei Formatierungsstile: %-Formatierung (alt), .format() (klassisch) und f-Strings (modern, bevorzugt). F-Strings sind am lesbarsten und unterstützen Ausdrücke direkt: f'{value:.2f}' formatiert eine Gleitkommazahl mit 2 Nachkommastellen. Wenn Sie wissen, wie man Zahlen formatiert, Strings auffüllt und Tabellen schnell ausgibt, verkürzt das die Fehlersuche unter Zeitdruck.
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'Effizientes Erstellen von Strings mit join()
Durch String-Verkettung mit + in einer Schleife wird in jeder Iteration ein neuer String erstellt, was für n Zeichen insgesamt O(n²) kostet. Das richtige Muster lautet: Fügen Sie die Teile einer Liste hinzu und rufen Sie am Ende ''.join(parts) auf; dies benötigt O(n). Dies ist eines der häufigsten Python-Performance-Anti-Patterns. Wenn Sie in einem Interview auf diesen Zielkonflikt hinweisen, zeigen Sie, dass Sie Pythons Speichermodell verstehen.
# 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'Ganzzahlen und Gleitkommazahlen aus Strings parsen
Die Umwandlung zwischen Strings und Zahlen ist grundlegend für Parsing-Probleme. int(s) und float(s) parsen numerische Strings; bei ungültiger Eingabe lösen sie ValueError aus. Verwenden Sie für sichereres Parsen einen try-except-Block. Mit den Stringmethoden isdigit() und isnumeric() können Sie die Eingabe vor der Umwandlung vorab prüfen. Bei Problemen wie „atoi“ (String zu Ganzzahl) müssen führende Leerzeichen, Vorzeichen und Überlauf behandelt werden.
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')) # 4193String-Slicing in Algorithmusaufgaben
String-Slicing wird ständig verwendet, verursacht aber versteckte Kosten: s[i:j] erstellt in O(j-i) Zeit einen neuen String der Länge j-i. Wenn Sie Teilstrings an rekursive Funktionen übergeben müssen, sollten Sie stattdessen die Indizes (start, end) des Teilstrings übergeben, um den O(n²)-Allokationsaufwand zu vermeiden. Diese Optimierung ist bei Problemen wie longest-palindromic-substring relevant, bei denen viele Teilstrings getestet werden.
# 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)) # FalseKurzübersicht zu Strings für Coding-Interviews
Behalten Sie diese String-Methoden für Interviews gedanklich parat:
split / join— analysieren und erstellenstrip / lstrip / rstrip— Leerraum entfernenlower / upper— Groß-/Kleinschreibung normalisierenfind / index— Teilstrings findenreplace— Ersetzungenisalnum / isalpha / isdigit— Zeichenklassen prüfenord / chr— ASCII-Arithmetik für Probleme mit einem festen Alphabetstartswith / endswith— Präfixe und Suffixe prüfen
# 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')) # FalseKurzer Test
Testen Sie Ihr Verständnis der Konzepte aus Data Structures & Algorithms — Coding Interview Prep, die in dieser Lektion behandelt wurden.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Python-Strings sind unveränderlich — für eine Änderung müssen Sie sie in eine Liste umwandeln, diese bearbeiten und anschließend wieder zusammenfügen, ord/chr ermöglichen Frequenzarrays mit fester Größe 26 für Probleme mit Kleinbuchstaben, die bei begrenzten Alphabeten schneller als Hashmaps sind und das Erstellen von Strings mit + in einer Schleife kostet O(n²) — sammeln Sie die Zeichen immer in einer Liste und verwenden Sie am Ende ''.join() für O(n). Als Nächstes sehen Sie sich die Sliding-Window-Technik für Teilstring-Probleme an.
Häufig gestellte Fragen
Ist die Lektion „Python-String-API für Interviews“ kostenlos?
Ja — der vollständige Text von „Python-String-API für Interviews“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Python-String-API für Interviews“?
Arbeiten Sie die in Interviewaufgaben zur Analyse und Transformation verwendeten Muster mit split, join, replace, find, ord/chr und String-Formatierung durch. Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Coding Interview Prep zu starten?
Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Python-String-API für Interviews“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?
Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Python-String-API für Interviews
- Sliding Window für Teilstrings
- Anagramme und Zeichenhäufigkeitskarten
- String-Kodierung, Umkehrung und Palindrome