สมมติว่ามีสตริง s ของตัวพิมพ์เล็ก เราต้องหาจำนวนสับสตริงทั้งหมดที่มีตัวอักษรเดียวไม่ซ้ำ
เช่น ถ้าอินพุตคือ "xxyy" ผลลัพธ์จะเป็น 6 สับสตริงคือ [x, x, xx, y, y, yy]
ขั้นตอนการแก้ปัญหา
- total := 0
- previous := สตริงว่าง
- สำหรับแต่ละตัวอักษร c ใน s
- ถ้า c ไม่เท่ากับ previous previous := c, temp := 1
- มิฉะนั้น temp := temp + 1
- total := total + temp
- คืนค่า total
ตัวอย่างโค้ด
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