একটি স্ট্রিং এবং ডিলিমিটার সেট দেওয়া আছে। স্ট্রিং-এর শব্দগুলো রিভার্স করতে হবে কিন্তু ডিলিমিটারদের আপেক্ষিক ক্রম অপরিবর্তিত রাখতে হবে।
উদাহরণ: s = "Computer/Network:Internet|tutorialspoint", delims = ["/", ":", "|"] হলে আউটপুট "tutorialspoint/Internet:Network|Computer"।
সমাধানের ধাপসমূহ
- itertools.groupby ব্যবহার করে শব্দ এবং ডিলিমিটার আলাদা করুন
- শব্দগুলো তালিকায় সংরক্ষণ করুন
- দ্বিতীয় পাসে ডিলিমিটারগুলো যেন থাকুক এবং শব্দগুলো রিভার্স অর্ডারে যোগ করুন
- ফলাফল স্ট্রিং ফেরত দিন
উদাহরণ কোড
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