สมมติว่าเรามีสตริงและชุดตัวคั่น เราต้องกลับคำในสตริง โดยที่ไม่ควรเปลี่ยนลำดับสัมพัทธ์ของตัวคั่น
ดังนั้น หากอินพุตเป็น s ="Computer/Network:Internet|tutorialspoint" delims =["/", ":", '|'] ผลลัพธ์จะเป็น tutorialspoint/Internet:Network|Computer
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
คำ :=รายการใหม่
ตอบ :=สตริงว่าง
temp :=แผนที่ที่
แยกคำยกเว้นตัวคั่นและแทรกลงในอาร์เรย์คำ
แยกคำเมื่อตัวละครอยู่ในตัวคั่นแล้วเพิ่มลงใน ans
มิฉะนั้นให้อ่านคำจากอาร์เรย์คำแบบย้อนกลับและเพิ่มลงใน ans
กลับมาอีกครั้ง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น:
ตัวอย่าง
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