自学内容网 自学内容网

基础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)!