For a given source string and a target string, you should output the first index(from 0) of target string in source string.
If target does not exist in source, just return -1.
Example
If source = “source” and target = “target”, return -1.
If source = “abcdabcdefg” and target = “bcd”, return 1.
Challenge
O(n2) is acceptable. Can you implement an O(n) algorithm (hint: KMP)
class Solution: """ @param: source: source string to be scanned. @param: target: target string containing the sequence of characters to match @return: a index to the first occurrence of target in source, or -1 if target is not part of source. """ def strStr(self, source, target): # write your code here if target == "": return 0 if (target == None) or (source == None): return -1 return source.find(target)
class Solution: """ @param: source: source string to be scanned. @param: target: target string containing the sequence of characters to match @return: a index to the first occurrence of target in source, or -1 if target is not part of source. """ def strStr(self, source, target): # write your code here if target == "": return 0 if (target == None) or (source == None): return -1 ls = len(source) lt = len(target) for i in range(1+ls-lt): if source[i] == target[0]: if source[i:lt+i] == target[:]: return i return -1