[LeetCode]28. 实现 strStr()

实现 strStr()

Posted by JinFei on November 22, 2021

题目描述

实现 strStr() 函数。

给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回  -1 。

 

说明:

当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。

对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/implement-strstr 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Example1:

输入:haystack = “hello”, needle = “ll” 输出:2

Example2:

输入:haystack = “aaaaa”, needle = “bba” 输出:-1

Example3:

输入:haystack = “”, needle = “” 输出:0

Note:

  • 0 <= haystack.length, needle.length <= 5 * 10^4
  • haystack 和 needle 仅由小写英文字符组成

解题思路

class Solution {
public:
    int strStr(string haystack, string needle) {
        if(needle.size() == 0){
            return 0;
        }
        int n = haystack.size();
        int m = needle.size();
        for(int i = 0; i + m <= haystack.size(); i++){
            bool flag = true;
            for(int j = 0; j < needle.size(); j++){
                if(haystack[i + j] != needle[j]){
                    flag = false;
                    break;
                }
            }
            if(flag){
                return i;
            }
        }
        return -1;
    }
};