题目链接:
28. 找出字符串中第一个匹配项的下标 - 力扣(LeetCode)
分析:一样属于考研最喜欢的手撕代码里面的模拟。
算法思路:题目要求在一个串中找到另一个串的最小起始位置,我们按照题目要求老老实实模拟执行的过程即可。先把needle的串长记录下来记作n,从haystack的其实开始,每次截取和n等长的子串记为temp然后和needle进行比较,如果相等的话则直接返回现在的下标;如果不等的话继续向后遍历;如果退出循环都没有找到,那么说明没有符合条件的下标,返回-1即可。
下面是参考代码:
class Solution {
public:
int strStr(string haystack, string needle) {
int m=haystack.size(),n=needle.size(); //记需要判断的字符needle的长度为n
for(int i=0;i<=(m-n);++i){ //从haystack的头开始遍历
string temp=haystack.substr(i,n); //取出每一个可能的子串
if(temp==needle) //进行比较 如果相等直接返回下标
return i;
}
return -1; //没有找到则返回-1
}
};