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;
    }
};
posted @ 2025-08-01 14:24  Jaylan  阅读(7)  评论(0)    收藏  举报