สมมติว่าเรามีสตริงตัวพิมพ์เล็ก s เราต้องตรวจสอบว่าสามารถเลือกลำดับของอักขระใน s ได้หรือไม่ − 1. ความแตกต่างของดัชนีสองตัวที่ต่อเนื่องกันของอักขระนั้นเหมือนกัน 2. อักขระประกอบเป็นสตริง "programmingquestion"พี>
ดังนั้น หากอินพุตเป็น "pzrzozgzrzazmzmziznzgzqzuzezsztziozn" ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- p :=อาร์เรย์ของดัชนีที่มี p อยู่
- r :=อาร์เรย์ของดัชนีที่มี r อยู่
- สำหรับแต่ละ j ใน p ทำ
- สำหรับแต่ละ k ใน r ทำ
- ถ้า k> j แล้ว
- ถ้า "programmingquestion" ในสตริงย่อยของ s จากดัชนี j ถึงขนาดของ s โดยข้ามอักขระ k-j แล้ว
- คืนค่า True
- ถ้า "programmingquestion" ในสตริงย่อยของ s จากดัชนี j ถึงขนาดของ s โดยข้ามอักขระ k-j แล้ว
- ถ้า k> j แล้ว
- สำหรับแต่ละ k ใน r ทำ
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): p = [i for i, c in enumerate(s) if c == "p"] r = [i for i, c in enumerate(s) if c == "r"] for j in p: for k in r: if k > j: if "programmingquestion" in s[j:len(s):k-j]: return True return False ob = Solution() s = "pzrzozgzrzazmzmziznzgzqzuzezsztzizozn" print(ob.solve(s))
อินพุต
"pzrzozgzrzazmzmziznzgzqzuzezsztzizozn"
ผลลัพธ์
True