मान लीजिए कि हमारे पास दो तार स्रोत और लक्ष्य हैं, हमें स्रोत के बाद के न्यूनतम संख्या का पता लगाना होगा जो हम इस तरह बना सकते हैं कि यदि हम उन्हें जोड़ते हैं, तो यह लक्ष्य के समान होगा। यदि ऐसा कोई परिणाम नहीं है, तो -1 लौटें।
इसलिए, यदि इनपुट स्रोत ="xyz" लक्ष्य ="xyzyzz" जैसा है, तो आउटपुट 3 होगा, क्योंकि हम इन्हें ["xyz" + "yz" + "z"]
से जोड़ सकते हैं।इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- s_size:=s का आकार, t_size:=t का आकार
- concat_count :=0, target_idx :=0
- जबकि target_idx
- source_idx:=0
- temp_index :=target_idx
- जबकि source_idx
- यदि s[source_idx] t[target_idx] के समान है, तो
- target_idx :=target_idx + 1
- source_idx :=source_idx + 1
- वापसी -1
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s, t): s_size, t_size = len(s), len(t) concat_count = 0 target_idx = 0 while target_idx < t_size: source_idx = 0 temp_index = target_idx while source_idx < s_size and target_idx < t_size: if s[source_idx] == t[target_idx]: target_idx += 1 source_idx += 1 if temp_index == target_idx: return -1 concat_count += 1 return concat_count ob = Solution() source = "xyz" target = "xyzyzz" print(ob.solve(source, target))
इनपुट
"xyz", "xyzyzz"
आउटपुट
3