มีสตริงและชุดตัวแบ่ง (delimiters) กลับลำดับคำ แต่คงตำแหน่งตัวแบ่งไว้
เช่น s="Computer/Network:Internet|tutorialspoint", delims=["/",":","|"] ให้ "tutorialspoint/Internet:Network|Computer"
ขั้นตอนการแก้ปัญหา
- ใช้
itertools.groupbyแยกคำและตัวแบ่ง - เก็บคำทั้งหมดใน list
words - วนอีกครั้ง: ถ้าเป็นตัวแบ่ง ใส่ต่อ ถ้าเป็นคำ pop จาก words (กลับลำดับ)
ตัวอย่างโค้ด
from itertools import groupby
class Solution:
def solve(self, sentence, delimiters):
words = []
ans = ""
for k,g in groupby(sentence, lambda x: x in delimiters):
if not k: words.append("".join(g))
for k,g in groupby(sentence, lambda x: x in delimiters):
if k: ans += "".join(g)
else: ans += words.pop()
return ans
ob = Solution()
s = "Computer/Network:Internet|tutorialspoint"
delims = ["/",":","|"]
print(ob.solve(s, delims))
อินพุต
"Computer/Network:Internet|tutorialspoint", ["/",":","|"]
เอาต์พุต
tutorialspoint/Internet:Network|Computer