leetcode原题链接:找出字符串中第一个匹配项的下标
ms-hot目录: ms-hot目录
上一篇:本文是第一篇
下一篇:
题目描述
给你两个字符串 haystack
和 needle
,请你在 haystack
字符串中找出 needle
字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle
不是 haystack
的一部分,则返回 -1
。
示例 1:
输入:haystack = "sadbutsad", needle = "sad" 输出:0 解释:"sad" 在下标 0 和 6 处匹配。 第一个匹配项的下标是 0 ,所以返回 0 。
示例 2:
输入:haystack = "leetcode", needle = "leeto" 输出:-1 解释:"leeto" 没有在 "leetcode" 中出现,所以返回 -1 。
解题方法:遍历两个数组,用一个start保存主串的第一个相同的位置。遍历过程中,分别用i,j记录主串和pattern串的当前位置,如果对应位置的值相同,则i++, j++;如果不相等,则i从start的下一个位置开始,j从0开始重新遍历。
C++代码
class Solution {
public:
int strStr(string haystack, string needle) {
int haystack_n = haystack.size();
int needle_n = needle.size();
int start = 0;
int i = 0; //遍历主串
int j = 0; //遍历匹配串
while (i < haystack_n) {
start = i; //记录主串扫描的起始位置
while (j < needle_n) {
if (haystack[i] == needle[j]) {
i++;
j++;
} else {
i = start + 1;
j = 0;
break;
}
}
if (j == needle_n) {
return start;
}
}
return -1;
}
};
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » ms-hot1
发表评论 取消回复