สมมติว่าเรามีสตริงที่เป็นตัวพิมพ์เล็ก เราต้องหาจำนวนสตริงย่อยทั้งหมดที่มีอักขระที่ไม่ซ้ำกันหนึ่งตัว
ดังนั้น หากอินพุตเป็นเหมือน "xxyy" ผลลัพธ์จะเป็น 6 เนื่องจากสตริงย่อยคือ [x, x, xx, y, y, yy]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- รวม :=0
- ก่อนหน้า :=สตริงว่าง
- สำหรับแต่ละอักขระ c ใน s ทำ
- ถ้า c ไม่เหมือนเดิมแล้ว
- ก่อนหน้า :=c
- อุณหภูมิ :=1
- มิฉะนั้น
- อุณหภูมิ :=อุณหภูมิ + 1
- รวม :=รวม + อุณหภูมิ
- ถ้า c ไม่เหมือนเดิมแล้ว
- ผลตอบแทนรวม
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): total = 0 previous = '' for c in s: if c != previous: previous = c in_a_row = 1 else: in_a_row += 1 total += in_a_row return total ob = Solution() print(ob.solve("xxyy"))
อินพุต
"xxyy"
ผลลัพธ์
6