मान लीजिए कि हमारे पास एक टेक्स्ट और स्ट्रिंग्स की एक सूची है जिसे पैटर्न कहा जाता है, हमें एक एम्बोल्डन फ़ंक्शन को परिभाषित करना होगा जहां टेक्स्ट में सभी सबस्ट्रिंग जो दिए गए पैटर्न में किसी भी स्ट्रिंग से मेल खाते हैं, उन्हें और में लपेटा जाता है। टैग। यदि कोई दो प्रतिमान आसन्न या ओवरलैप हैं, तो उन्हें एक टैग में मिला दिया जाना चाहिए।
इसलिए, यदि इनपुट टेक्स्ट ="थिसिसम्प्लीलाइन" पैटर्न =["यह", "इस्सम", "नमूना"] जैसा है, तो आउटपुट "एbcdef होगा। b>g", क्योंकि bc और ef टेक्स्ट से मेल खाते हैं और और टैग में लिपटे हुए हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
-
n :=टेक्स्ट का आकार
-
बोल्ड :=आकार n की एक सूची, और गलत मानों से भरें
-
मेरे लिए 0 से n की सीमा में, करें
-
पैटर्न में प्रत्येक p के लिए, करें
-
अगर टेक्स्ट का सबस्ट्रिंग [इंडेक्स i से अंत तक] p से शुरू होता है, तो
-
j के लिए 0 से p के आकार की सीमा में, करें
-
बोल्ड [i + j] :=सच
-
-
-
-
-
उत्तर:=रिक्त स्ट्रिंग
-
मेरे लिए 0 से n की सीमा में, करें
-
अगर बोल्ड [i] और (i 0 के समान है या बोल्ड [i - 1] गलत है), तो
-
उत्तर :=उत्तर समवर्ती ""
-
-
उत्तर:=उत्तर + पाठ [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