สมมติว่าเรามีสองสตริง s และ t เราต้องการสร้าง t แต่มีปัญหาบางอย่างในแป้นพิมพ์ที่อักขระบางตัวติดอยู่ ดังนั้นจึงอาจเขียนได้ 1 ครั้งขึ้นไป เราต้องเช็คก่อนว่ามันเป็นไปได้ที่ typed s ตั้งใจจะเขียน t หรือเปล่า
ดังนั้น หากอินพุตเป็น s ="appppleee" t ="apple" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- i :=0, j :=0
- s_len :=ขนาดของ s
- t_len :=ขนาดของเสื้อ
- t_last :=สตริงว่าง
- ในขณะที่เจ
- ถ้าฉันเหมือนกับ s_len แล้ว
- คืนค่าเท็จ
- ถ้า s[i] เหมือนกับ t[j] แล้ว
- t_last :=t[j]
- ผม :=ผม + 1
- j :=j + 1
- มิฉะนั้นเมื่อ s[i] เหมือนกับ t_last แล้ว
- ผม :=ผม + 1
- มิฉะนั้น
- คืนค่าเท็จ
- ถ้าฉันเหมือนกับ s_len แล้ว
- คืนค่า 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