สมมติว่าเรามีสตริง s เราต้องบีบอัดสตริงนี้ลงในแบบฟอร์มการเข้ารหัส Run length ดังนั้นเมื่ออักขระซ้ำ k จำนวนครั้งติดต่อกันเช่น 'bbbb' ในที่นี้ ตัวอักษร 'b' จะซ้ำกันสี่ครั้งติดต่อกัน ดังนั้นรูปแบบที่เข้ารหัสจะเป็น 'b4' สำหรับอักขระตัวเดียว เราจะไม่เพิ่มการนับเข้าไป
ดังนั้น หากอินพุตเป็น s ="abbbaaaaaaccdaaab" ผลลัพธ์จะเป็น ab3a6c2da3b
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- res :=สตริงว่าง
- cnt :=1
- สำหรับ i ในช่วง 1 ถึงขนาด s - 1 ทำ
- ถ้า s[i - 1] เหมือนกับ s[i] แล้ว
- cnt :=cnt + 1
- มิฉะนั้น
- res :=res concatenate s[i - 1]
- ถ้า cnt> 1 แล้ว
- res :=res concatenate cnt
- cnt :=1
- ถ้า s[i - 1] เหมือนกับ s[i] แล้ว
- res :=res + อักขระตัวสุดท้ายของ s
- ถ้า cnt> 1 แล้ว
- res :=res concatenate cnt
- ผลตอบแทน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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