मान लीजिए हमारे पास दो स्ट्रिंग्स str और sub_str हैं। हमें str में sub_str की पहली घटना ढूंढनी है। यदि स्ट्रिंग str "helloworld" है, और उपस्ट्रिंग "lo" है, तो परिणाम 3 होगा।
यह C में strstr() फंक्शन का उपयोग करके किया जा सकता है। हमें C में strstr() के समान एक और फंक्शन डिजाइन करना है।
हल करने के चरण
- i := 0, j := 0, m := sub_str की लंबाई और n := str की लंबाई
- यदि m = 0, तो 0 वापस करें
- जब तक i < n और n - i + 1 = m, करें
- यदि str[i] = sub_str[j], तो
- temp := j
- जब तक j < m और i < n और sub_str[j] == str[j], करें
- i और j को 1 से बढ़ाएं
- यदि j = m, तो temp वापस करें
- i := temp + 1
- j := 0
- अन्यथा i को 1 से बढ़ाएं
- यदि str[i] = sub_str[j], तो
- -1 वापस करें
बेहतर समझ के लिए कार्यान्वयन देखें:
उदाहरण (पायथन)
class Solution(object):
def strStr(self, haystack, needle):
"""
:type haystack: str
:type needle: str
:rtype: int
"""
i = 0
j = 0
m = len(needle)
n = len(haystack)
if m ==0:
return 0
while i<n and n-i+1>=m:
if haystack[i] == needle[j]:
temp = i
while j<m and i<n and needle[j]==haystack[i]:
i+=1
j+=1
if j == m:
return temp
i= temp+1
j = 0
else:
i+=1
return -1
haystack = "helloworld"
needle = "lo"
ob1 = Solution()
print(ob1.strStr(haystack, needle))
इनपुट
haystack = "helloworld" needle = "lo"
आउटपुट
3