Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมกลับลำดับคำที่คั่นด้วยตัวแบ่งใน Python


มีสตริงและชุดตัวแบ่ง (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