[Leetcode 28]實現 strStr() 函數

1題目

實現 strStr() 函數。

給定一個 haystack 字符串和一個 needle 字符串,在 haystack 字符串中找出 needle 字符串出現的第一個位置 (從0開始)。如果不存在,則返回  -1。

示例 1:

輸入: haystack = "hello", needle = "ll"
輸出: 2
示例 2:

輸入: haystack = "aaaaa", needle = "bba"
輸出: -1

2分析

思路:一個主串a,一個子串b。當a[i]==b[j],i++,j+繼續向後對齊。當a[i]!=b[j],說明不可以繼續不配了。我們從剛開始匹配的位置+1開始重新匹配,j歸0。如果匹配成功則我們可以倒推出最初匹配的位置。用當前主串的位置減去j,即串長。

3代碼

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章