C++小白修仙记_LeetCode刷题_28找出字符串中第一个匹配项的下标
28.找出字符串中第一个匹配项的下标
给你两个字符串 haystack
和 needle
,请你在 haystack
字符串中找出 needle
字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle
不是 haystack
的一部分,则返回 -1
。
示例:
输入: haystack = "sadbutsad", needle = "sad"
输出: 0
解释: "sad" 在下标 0 和 6 处匹配。
第一个匹配项的下标是 0 ,所以返回 0 。
方法一:暴力匹配
时间复杂度O(N∗M) 空间复杂度
O(1)
class Solution {
public:
int strStr(string haystack, string needle) {
int len1 = haystack.length();
int len2 = needle.length();
if(len1 < len2)
return -1;
for(int i = 0; i < len1 - len2 + 1; i++)
{
if(needle[0] == haystack[i])//潜在匹配
{
int x = 0, y = i, flag = 1;//x指向短串 y指向长串
while(x < len2 && y < len1)
{
if(needle[x] != haystack[y])
{
flag--;
break;
}
x++;
y++;
}
if(flag)
return i;
}
}
return -1;
}
};