lintcode训练笔记 题目:字符串查找

题目:
对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。样例样例 1:输入: source = “source” , target = “target”
输出:-1
样例解释: 如果source里没有包含target的内容,返回-1
样例 2:输入: source = “abcdabcdefg” ,target = “bcd”
输出: 1
样例解释: 如果source里包含target的内容,返回target在source里第一次出现的位置
挑战O(n2)的算法是可以接受的。如果你能用O(n)的算法做出来那更加好。

正确解法:
def strStr(self, source, target):
	if source is None or target is None:
            return -1
        ls, lt = len(source), len(target)
        for i in range(ls - lt + 1):
            print(i)
            j = 0 
            while j < lt and source[i+j] == target[j]:
                j += 1 
            if j == lt:
                return i 
        return -1 

错误解法:

def strStr(self, source, target):
      if (len(source)==0 and len(target)==0) or (len(target)==0):
          return 0
      if len(source)==0:
          return -1
      if len(target)>len(source):
          return -1
      i=0
      j=0
      while i =len(source):
                  return -1
              else:
                  continue
          else:
              i=i+1 
              j=j+1
              print("3:",i,j)
              if j>=len(source) and i=len(target):
                  res=j-i
                  return res

错误解法,若source=“sourced”,target="orc"输出为2.打印日志为:
2: 0 1
3: 1 2
2: 1 3
3: 2 4
3: 3 5
以上解法思路可用于判断字符串target中的所有字符是否存在于source中。
python 里的None相当于一个空对象,type(None)为而 “” 就是一个空字符串,判断时结果都是false

你可能感兴趣的:(lintcode)