ধরুন আমাদের কাছে একটি টেক্সট এবং প্যাটার্ন নামক স্ট্রিংগুলির একটি তালিকা আছে, আমাদের একটি এমবোল্ডেন ফাংশন সংজ্ঞায়িত করতে হবে যেখানে প্রদত্ত প্যাটার্নের যেকোনো স্ট্রিংয়ের সাথে মেলে এমন পাঠ্যের সমস্ত সাবস্ট্রিং এবং -এ মোড়ানো হয়। ট্যাগ. যদি কোন দুটি প্যাটার্ন সন্নিহিত বা ওভারল্যাপ হয়, তবে সেগুলিকে একটি ট্যাগে একত্রিত করা উচিত৷
সুতরাং, যদি ইনপুটটি পাঠ্য ="thisissampleline" patterns =["this", "issam", "sample"] এর মত হয়, তাহলে আউটপুট হবে "abcdef b>g", যেহেতু bc এবং ef পাঠ্যের সাথে মিলে যায় এবং এবং ট্যাগে মোড়ানো হয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
-
n :=পাঠ্যের আকার
-
বোল্ড :=আকার n এর একটি তালিকা, এবং মিথ্যা মান দিয়ে পূরণ করুন
-
0 থেকে n রেঞ্জের জন্য, করুন
-
প্যাটার্নে প্রতিটি পি এর জন্য, করুন
-
যদি পাঠ্যের সাবস্ট্রিং [সূচী i থেকে শেষ পর্যন্ত] p দিয়ে শুরু হয়, তাহলে
-
j-এর জন্য 0 থেকে p এর আকারের মধ্যে, করুন
-
বোল্ড[i + j] :=সত্য
-
-
-
-
-
উত্তর :=ফাঁকা স্ট্রিং
-
0 থেকে n রেঞ্জের জন্য, করুন
-
যদি bold[i] এবং (i 0 এর মত হয় বা bold[i - 1] মিথ্যা হয়), তাহলে
-
ans :=ans concatente ""
-
-
ans :=ans + text[i]
-
যদি বোল্ড[i] এবং (i একই হয় n - 1 বা বোল্ড[i + 1] মিথ্যা), তাহলে
-
ans :=ans concatenate ""
-
-
-
উত্তর ফেরত দিন
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
উদাহরণ
class Solution: def solve(self, text, patterns): n = len(text) bold = [False] * n for i in range(n): for p in patterns: if text[i:].startswith(p): for j in range(len(p)): bold[i + j] = True ans = "" for i in range(n): if bold[i] and (i == 0 or not bold[i - 1]): ans += "" ans += text[i] if bold[i] and (i == n - 1 or not bold[i + 1]): ans += "" return ans ob = Solution() text = "thisissampleline" patterns = ["this", "ssam", "sample"] print(ob.solve(text, patterns))
ইনপুট
"thisissampleline", ["this", "ssam", "sample"]
আউটপুট
<b>this</b>i<b>ssample</b>line