สมมติว่าเรามีสตริง s s เป็นสตริงที่เข้ารหัสความยาวรัน เราต้องหาเวอร์ชันที่ถอดรหัสแล้ว อย่างที่เราทราบกันดีว่าการเข้ารหัสแบบรัน-ยาวเป็นวิธีที่ง่ายและรวดเร็วในการเข้ารหัสสตริง แนวคิดมีดังนี้ - องค์ประกอบต่อเนื่อง (อักขระ) ซ้ำ ๆ เป็นการนับและอักขระเดียว ตัวอย่างเช่น หากสตริงเหมือน "BBBBAAADDCBB" จะถูกเข้ารหัสเป็น "4B3A2D1C2B"
ดังนั้น หากอินพุตเท่ากับ s ="4B3A2D1C2B" เอาต์พุตจะเป็น "BBBBAAADDCBB"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เอาต์พุต :=สตริงว่าง
- num:=สตริงว่าง
- สำหรับแต่ละอักขระ i ใน s ทำ
- ถ้าฉันเป็นตัวอักษร งั้น
- เอาต์พุต :=เอาต์พุต + i*(ตัวเลขเป็นตัวเลข)
- num:=สตริงว่าง
- มิฉะนั้น
- num :=num + i
- ถ้าฉันเป็นตัวอักษร งั้น
- ผลตอบแทนที่ได้
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
class Solution: def solve(self, s): output = "" num="" for i in s: if i.isalpha(): output+=i*int(num) num="" else: num+=i return output ob = Solution() print(ob.solve("4B3A2D1C2B"))
อินพุต
"4B3A2D1C2B"
ผลลัพธ์
BBBBAAADDCBB