实现strStr()
实现strStr()函数。
给定一个haystack字符串和一个needle字符串,在haystack字符串中找出needle字符串出现的第一个位置 (从0开始)。如果不存在,则返回-1。
示例 1:
输入: haystack = "hello", needle = "ll"
输出: 2
示例 2:
输入: haystack = "aaaaa", needle = "bba"
输出: -1
说明:
- 当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。
- 对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与C语言的 strstr() 以及 Java的 indexOf() 定义相符。
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #include <iostream> #include <vector> using namespace std;
class Solution { public: int strStr(string haystack, string needle) { if (needle.size() < 1) { return 0; } int traceLen = haystack.size() - needle.size() + 1; if (traceLen < 1) { return -1; } for (int i = 0; i < traceLen; ++i) { if (haystack.at(i) != needle.at(0)) { continue; } int j = 1; while (j < needle.size() && ((i + j) < haystack.size()) && haystack[i + j] == needle[j]) { j++; } if (j == needle.size()) { return i; } } return -1; } };
int main() { std::cout << Solution().strStr("hello", "ll") << std::endl; std::cout << Solution().strStr("aaaaa", "bba") << std::endl; std::cout << Solution().strStr("a", "a") << std::endl; }
|