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;
}
};