Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมตรวจสอบว่าสตริงที่พิมพ์เป็นการเขียนสตริงเป้าหมายกับคีย์บอร์ดติดหรือไม่ใน Python

สมมติว่าเรามีสตริงสองตัว s และ t เราต้องการสร้าง t แต่คีย์บอร์ดมีปัญหาบางตัวอักษรติด จึงอาจพิมพ์ซ้ำ 1 ครั้งหรือมากกว่า เราต้องตรวจสอบว่า s ที่พิมพ์ออกมาอาจเป็นการตั้งใจเขียน t หรือไม่

เช่น ถ้าอินพุตคือ s = "appppleee", t = "apple" ผลลัพธ์จะเป็น True

ขั้นตอนการแก้ปัญหา

  1. i := 0, j := 0
  2. s_len := ขนาดของ s, t_len := ขนาดของ t
  3. t_last := สตริงว่าง
  4. ในขณะที่ j < t_len:
    • ถ้า i == s_len คืนค่า False
    • ถ้า s[i] == t[j]:
      • t_last := t[j]
      • i := i + 1, j := j + 1
    • มิฉะนั้นถ้า s[i] == t_last:
      • i := i + 1
    • มิฉะนั้น คืนค่า False
  5. ถ้า i < s_len คืนค่า True ถ้าตัวอักษรทุกตัวใน s[i:] เท่ากับ t_last
  6. มิฉะนั้น คืนค่า True

ตัวอย่างการใช้งาน

def solve(s, t):
    i = j = 0
    s_len = len(s)
    t_len = len(t)
    t_last = ""
    while j < t_len:
        if i == s_len:
            return False
        if s[i] == t[j]:
            t_last = t[j]
            i += 1
            j += 1
        elif s[i] == t_last:
            i += 1
        else:
            return False
    if i < s_len:
        return all(char == t_last for char in s[i:])
    else:
        return True

s = "appppleee"
t = "apple"
print(solve(s, t))

อินพุต

"appppleee", "apple"

เอาต์พุต

True