Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution:
- """
- @param source:
- @param target:
- @return: return the index
- """
- def strStr(self, source, target):
- # Write your code here
- if len(target)==0:
- return 0
- if len(source) < len(target):
- return -1
- lps_target = self.preprocess(target)
- index_source = 0
- index_target = 0
- while True:
- if index_target == len(target):
- return index_source - len(target)
- if index_source == len(source):
- return -1
- if target[index_target]==source[index_source]:
- index_source+=1
- index_target+=1
- else:
- if index_target!=0:
- index_target = lps_target[index_target+1]
- else:
- index_source+=1
- def preprocess(self, target):
- i=1 # this tracks the length of substring we are going to discover
- length=0 #this tracks the length of lps
- lps=[0] * len(target)
- while i<len(target):
- if target[length-1] == target[i]:
- lps[i]=length+1
- print(length)
- length += 1
- i+=1
- else:
- if length == 0:
- lps[i]=0
- i+=1
- else:
- length = lps[length-1]
- return lps
Add Comment
Please, Sign In to add comment