สมมติว่าเรามีสองสตริง str และ sub_str เราต้องหาการเกิดขึ้นครั้งแรกของ sub_str ใน str ดังนั้นหากสตริง str คือ "helloworld" และสตริงย่อยคือ "lo" ผลลัพธ์จะเป็น 3
สามารถทำได้โดยใช้ฟังก์ชัน strstr() ใน C เราต้องออกแบบฟังก์ชันอื่นที่คล้ายกับ strstr() ใน C
ในการแก้ปัญหานี้ ให้ทำตามขั้นตอนเหล่านี้ -
- i :=0, j :=0, m :=ความยาวของ sub_str และ n :=ความยาวของ str
- ถ้า m =0 ให้คืนค่า 0
- ในขณะที่ i
- ถ้า str[i] =sub_str[j] แล้ว
- อุณหภูมิ :=เจ
- ในขณะที่ j
- เพิ่ม i และ j ขึ้น 1
- ถ้า j =m ให้คืนค่า temp
- i :=อุณหภูมิ + 1
- j :=0
- ถ้า str[i] =sub_str[j] แล้ว
มาดูการใช้งานกันให้เกิดความเข้าใจกันมากขึ้น
ตัวอย่าง (Python)
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