สมมติว่าเรามีสตริง s เราต้องบีบอัดสตริงนี้เป็นรูปแบบ Run-Length Encoding เมื่อตัวอักษรซ้ำกันติดต่อกัน k ครั้ง เช่น 'bbbb' ตัวอักษร 'b' ซ้ำ 4 ครั้งติดต่อกัน รูปแบบที่เข้ารหัสจะเป็น 'b4' สำหรับตัวอักษรเดี่ยวจะไม่เพิ่มตัวเลขจำนวน
ตัวอย่างเช่น หาก s = "abbbaaaaaaccdaaab" ผลลัพธ์จะเป็น ab3a6c2da3b
ขั้นตอนการแก้ปัญหา
- res := สตริงว่าง
- cnt := 1
- for i ในช่วง 1 ถึง len(s) - 1:
- ถ้า s[i-1] เท่ากับ s[i]: cnt := cnt + 1
- มิฉะนั้น:
- res := res + s[i-1]
- ถ้า cnt > 1: res := res + str(cnt)
- cnt := 1
- res := res + ตัวอักษรสุดท้ายของ s
- ถ้า cnt > 1: res := res + str(cnt)
- คืนค่า res
ตัวอย่างโค้ด
def solve(s):
res = ""
cnt = 1
for i in range(1, len(s)):
if s[i-1] == s[i]:
cnt += 1
else:
res = res + s[i-1]
if cnt > 1:
res += str(cnt)
cnt = 1
res = res + s[-1]
if cnt > 1:
res += str(cnt)
return res
s = "abbbaaaaaaccdaaab"
print(solve(s))
อินพุต
"abbbaaaaaaccdaaab"
เอาต์พุต
ab3a6c2da3b