मान लीजिए हमारे पास एक स्ट्रिंग और डिलीमीटर्स का एक सेट है, हमें स्ट्रिंग में शब्दों को उल्टा करना है जबकि डिलीमीटर्स का सापेक्ष क्रम नहीं बदला जाना चाहिए।
उदाहरण के लिए, यदि इनपुट s = "Computer/Network:Internet|tutorialspoint" delims = ["/", ":", '|'] है, तो आउटपुट tutorialspoint/Internet:Network|Computer होगा।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:
words := एक नई सूची
ans := खाली स्ट्रिंग
temp := एक मैप जहां
शब्दों को डिलीमीटर वर्णों को छोड़कर अलग करें और उन्हें words सरणी में डालें
जब वर्ण डिलीमीटर में हो तो शब्दों को अलग करें और उन्हें ans में जोड़ें,
अन्यथा words सरणी से शब्द को उल्टे क्रम में पढ़ें और 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