כתיבת קוד — שיעור 5
Python מרוכז: יסודות אינטנסיביים
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T1 · מתחיל150 נק'~10 דק'debug
תיקון באג — בודק פלינדרום
בודק הפלינדרום הבא מתעלם מרישיות אך שבור: הוא מדלג על השוואת התו הראשון לאחרון, ולכן מחרוזת שנבדלת רק בקצוות מסווגת כפלינדרום בטעות (למשל "yabax" מוחזר True). מצא ותקן. החזר את הגרסה המתוקנת.
// הקוד השבור לתיקון
def is_palindrome(s: str) -> bool:
s = s.lower()
n = len(s)
for i in range(1, n // 2): # באג כאן
if s[i] != s[n - i - 1]:
return False
return Trueדוגמאות
is_palindrome('racecar') → True
is_palindrome('yabax') → False
is_palindrome('Anna') → True
הפתרון נשמר מקומית אוטומטית.
T2 · בסיסי200 נק'~15 דק'algorithmic
התו היחיד הראשון
נתונה מחרוזת s. החזר את האינדקס של התו הראשון שאינו חוזר על עצמו במחרוזת. אם אין תו כזה — החזר -1. חובה O(n): קלט של מיליון תווים חייב לרוץ בזמן. (פתרון תמים שסופר מופעים עם s.count בתוך לולאה הוא O(n²) וייפסל ב-timeout.)
דוגמאות
first_uniq('leetcode') → 0
first_uniq('loveleetcode') → 2
first_uniq('aabb') → -1
הפתרון נשמר מקומית אוטומטית.