leetcode 28. 找出字符串中第一个匹配项的下标

2023.6.15

leetcode 28. 找出字符串中第一个匹配项的下标_第1张图片

        KMP字符串匹配经典题目,但是我第一次做没有用KMP算法,使用的是暴力解法,下面说一下暴力解的思路:

  1. 先判断haystack 字符串是不是大于等于needle字符串,不是的话直接返回-1.
  2. 再用for循环遍历字符串数字haystack,但是不用遍历完,遍历到haystack.size()-needle.size() 就可以了。 
  3. 判断每一次遍历haystack[i] 是否等于 needle的第一个字符,是的话就用while循环再继续判断下去,看接下来的字符是不是相等。

下面直接上代码:

方法一:暴力解

class Solution {
public:
    int strStr(string haystack, string needle) {
        int index = 0;
        
        if(haystack.size() < needle.size()) return -1;
        
        for(int i=0; i<=haystack.size()-needle.size();i++)
        {
            if(haystack[i] == needle[0])
            {
                index = i;
                int j = 1;
                while(needle.size() > 1 && needle[j] && haystack[i+j] == needle[j])
                {
                    j++;
                }
                if(j == needle.size()) return index;
            }
        }
        return -1;
    }
};

        比较捞的解法,我也是提交失败后改之又改。

        日后再来学习一下KMP算法。

你可能感兴趣的:(leetcode专栏,leetcode,算法,c++,数据结构)