基础50刷题之三(找出字符串中第一个匹配项的下标)
前言
刚上研一,有人劝我好好学C++,当时用的不多就没学,现在毕业上班了。在此亡羊补牢了
在此感谢力扣和文心一言
一、题目
给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。
二、力扣官方解释
class Solution {
public:
int strStr(string haystack, string needle) {
int n = haystack.size(), m = needle.size();
for (int i = 0; i + m <= n; i++) {
bool flag = true;
for (int j = 0; j < m; j++) {
if (haystack[i + j] != needle[j]) {
flag = false;
break;
}
}
if (flag) {
return i;
}
}
return -1;
}
};
三、文心一言解释
int n = haystack.size(), m = needle.size();:获取haystack和needle的长度。
外层循环 for (int i = 0; i + m <= n; i++):遍历haystack,从索引0开始,直到haystack的剩余长度不足以容纳needle为止。
bool flag = true;:设置一个标志flag,用于标记是否找到了匹配的子串。
内层循环 for (int j = 0; j < m; j++):对于每个haystack中的可能开始位置,遍历needle,比较每个字符是否匹配。
if (haystack[i + j] != needle[j]) { flag = false; break; }:如果在某个位置发现字符不匹配,将flag设置为false并跳出内层循环。
if (flag) { return i; }:如果flag仍然是true,说明找到了匹配的子串,返回开始位置的索引。
return -1;:如果遍历完整个haystack都没有找到匹配的子串,返回-1。
总结
早学早烧脑,晚学来后悔
原文地址:https://blog.csdn.net/qq_49973861/article/details/136563505
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!