[Leetcode28]实现strStr()

实现 strStr() 函数。

给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回  -1

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。

python:

class Solution:
    def strStr(self, haystack, needle):
        """
        :type haystack: str
        :type needle: str
        :rtype: int
        """
        p,q = len(haystack),len(needle)
        if q == 0:
            return 0
        n = p - q
        if n < 0 or (n == 0 and haystack[0] != needle[0]):
            return -1
        i,j = 0,0
        while i < p:
            if haystack[i] == needle[j]:
                if j == (q - 1):
                    return i - j
                else:
                    i += 1
                    j += 1
            else:
                i = i - j + 1
                j = 0
        return -1

C++: 

class Solution {
public:
    int strStr(string haystack, string needle) {
        int p = haystack.length();int q = needle.length();int n = p - q;
        if(q == 0) return 0;
        if(n < 0 || (n == 0 && haystack[0] != needle[0])) return -1;
        int i = 0;int j = 0;
        while(i < p){
            if(haystack[i] == needle[j]){
                if(j == (q - 1)) return i - j;
                else{
                    i += 1;j += 1;
                }
            }
            else{
                i = i - j + 1;j = 0;
            }
        }
        return -1;
    }
};

猜你喜欢

转载自blog.csdn.net/qq_40501689/article/details/84642704