实现strStr()
给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。
https://leetcode-cn.com/problems/implement-strstr/solution/shi-xian-strstr-by-leetcode/
思路:首先分清特殊情况,为空或者长度问题;
然后现在haystack串中找到与needle[0]相等的字符的位置,接着判断从此位置开始的needle.size()个字符的子串是否与needle相等,若是,返回;若否,继续寻找。
int strStr(string haystack, string needle) { if (needle.empty()) return 0; if (haystack.empty()||haystack.size()<needle.size()) return -1; int i=0; int needleSize = needle.size(), haystackSize = haystack.size(); while(haystack[i] != '\0') { if (haystack[i] == needle[0] && i + needleSize <= haystackSize) { if (haystack.substr(i, needleSize) == needle) return i; else ++i; } else ++i; } return -1; }