मान लीजिए कि हमारे पास दो स्ट्रिंग्स s और t हैं, हमें s के एक गैर-रिक्त स्थानापन्न का चयन करने के तरीकों की संख्या का पता लगाना होगा और एक एकल वर्ण को दूसरे भिन्न वर्ण से बदलना होगा जैसे कि परिणामी सबस्ट्रिंग t के सबस्ट्रिंग में से एक है। हमें उपरोक्त शर्तों को पूरा करने वाले सबस्ट्रिंग की संख्या ज्ञात करनी है।
इसलिए, यदि इनपुट s ="sts" t ="tsts" जैसा है, तो आउटपुट 6 होगा क्योंकि निम्नलिखित s और t से सबस्ट्रिंग के जोड़े हैं जो 1 वर्ण से भिन्न हैं -
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts"),
- ("sts", "tsts")
बोल्ड कैरेक्टर भाग वे सबस्ट्रिंग हैं जिन्हें दो स्ट्रिंग्स s और t से चुना जाता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- n1 :=आकार का
- n2 :=t का आकार
- उत्तर:=0
- प्रत्येक अनुक्रमणिका i1 और s से वर्ण c1 के लिए, करें
- प्रत्येक अनुक्रमणिका i2, और t से वर्ण c2 के लिए, करें
- i :=i1, j :=i2
- जबकि मैं
- i :=i + 1, j :=j + 1
- यदि i
- :=i + 1, j:=j + 1
- उत्तर:=उत्तर + 1
- जबकि मैं
- i :=i + 1, j :=j + 1
- उत्तर:=उत्तर + 1
- प्रत्येक अनुक्रमणिका i2, और t से वर्ण c2 के लिए, करें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s, t): n1 = len(s) n2 = len(t) ans = 0 for i1, c1 in enumerate(s): for i2, c2 in enumerate(t): i = i1 j = i2 while i < n1 and j < n2 and s[i] == t[j]: i += 1 j += 1 if i < n1 and j < n2 and s[i] != t[j]: i += 1 j += 1 ans += 1 while i < n1 and j < n2 and s[i] == t[j]: i += 1 j += 1 ans += 1 return ans s = "sts" t = "tsts" print(solve(s, t))
इनपुट
"sts", "tsts"
आउटपुट
6