zoukankan      html  css  js  c++  java
  • 28. Implement strStr()

    Implement strStr().

    Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

    1

    1 class Solution(object):
    2     def strStr(self, haystack, needle):
    3         """
    4         :type haystack: str
    5         :type needle: str
    6         :rtype: int
    7         """
    8         return haystack.find(needle)

    2 brute force

    class Solution(object):
        def strStr(self, haystack, needle):
            """
            :type haystack: str
            :type needle: str
            :rtype: int
            """
            result = -1
            l_needle = len(needle)
            l_haystack = len(haystack)
            if l_needle == 0 and l_haystack == 0:
                return 0
            if l_haystack == 0 and l_needle!=0:
                return result    
            if l_needle == 0 :
                return 0
            for index in range(l_haystack):
                if l_haystack - index  >= l_needle and needle == haystack[index:index+l_needle]:
                    result = index
                    break
            return result 

     3 hash 有待改进

    class Solution(object):
        def strStr(self, haystack, needle):
            """
            :type haystack: str
            :type needle: str
            :rtype: int
            """
            result = -1
            l_needle = len(needle)
            l_haystack = len(haystack)
            if l_needle == 0 and l_haystack == 0:
                return 0
            if l_haystack == 0 and l_needle!=0:
                return result    
            if l_needle == 0 :
                return 0
            if l_needle>l_haystack:
                return result
            hash_needle=hash(needle)
            list_haystack=[]
            for index in range(l_haystack):
                if index<=(l_haystack-l_needle):
                    list_haystack.append(hash(haystack[index:index+l_needle]))
            result=list_haystack.index(hash_needle) if hash_needle in  list_haystack else -1 
            return result 
  • 相关阅读:
    NYOJ 1073 最大值 (模拟)
    NYOJ 1063 生活的烦恼 (二叉树)
    NYOJ 1022 合纵连横 (并查集)
    [leetcode-553-Optimal Division]
    [leetcode-496-Next Greater Element I]
    [leetcode-556-Next Greater Element III]
    [leetcode-500-Keyboard Row]
    [leetcode-36-Valid Sudoku]
    [leetcode-127-Word Ladder]
    [leetcode-567-Permutation in String]
  • 原文地址:https://www.cnblogs.com/rocksolid/p/6244541.html
Copyright © 2011-2022 走看看