สมมติว่าเรามีสตริงที่มีตัวอักษรสามประเภท R, B และ dot(.) ที่นี่ R ย่อมาจากตำแหน่งปัจจุบันของเรา B หมายถึงตำแหน่งที่ถูกบล็อก และจุด (.) หมายถึงตำแหน่งว่าง ตอนนี้ในขั้นตอนเดียว เราสามารถย้ายไปยังตำแหน่งที่อยู่ติดกันไปยังตำแหน่งปัจจุบันของเรา ตราบใดที่ยังว่างอยู่ (ว่างเปล่า ). เราต้องตรวจสอบว่าเราสามารถไปถึงตำแหน่งซ้ายสุดหรือตำแหน่งขวาสุดได้
ดังนั้น หากอินพุตเป็น s ="..........R.....BBBB....." ผลลัพธ์จะเป็น True เนื่องจาก R สามารถไปถึงตำแหน่งซ้ายสุดได้เนื่องจาก ไม่มีการปิดกั้น
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- r_pos :=ดัชนีของ 'R' ใน s
- คืนค่า True เมื่อ 'B' ไม่มีอยู่ใน s[จากดัชนี 0 ถึง r_pos-1] หรือ 'B' ไม่อยู่ใน s[fromindex r_pos to end]
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): r_pos = s.find('R') return not 'B' in s[:r_pos] or not 'B' in s[r_pos:] ob = Solution() s = "...........R.....BBBB....." print(ob.solve(s))
อินพุต
"...........R.....BBBB....."
ผลลัพธ์
True