题目如下:
文章图片
解题思路:
分别对两个字符串 haystack 和 needle 设置移动标签 i 和 j ,比较并顺序移动它们,当标签 j 第一次顺序移动至字符串 needle 的末尾时即找到第一个匹配的支付串。需要注意的时,当字符串部分匹配时需要回退字符串 haystack 的标签 i 。
代码如下:
class Solution {
public:
int strStr(string haystack, string needle) {
int l1 = haystack.size();
int l2 = needle.size();
int i = 0, j= 0;
while(i < l1 && j < l2){
if(haystack[i] == needle[j]){
i++;
j++;
}
else{
i = i - j + 1;
//回退,针对例如"mississippi"、"issip"的情况
j = 0;
}
}
if(j >= l2)
return (i - j);
else
return -1;
}
};
文章图片
【【leetcode】28-实现strStr()【C++】】