Implement strStr()
Description:
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)
Code:
1.
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)
2.
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