leetcode之路028 Implement strStr()

来源:互联网 发布:腾讯期货数据接口 编辑:程序博客网 时间:2024/05/18 22:10


题目大意:实现函数strstr(string haystack, string needle)。返回haystack中第一次出现needle的下标。注意是下标,从0开始的。

这个题目,可简单点做,直接循环遍历,可复杂度点,提高效率,即kmp算法。

思路一:

1、当needle长度为0,返回0。

2、令两个字符串长度为m,n,则外层循环m次,对haystack中每一个字符i开始进行判断是否匹配操作,即对haystack[i+q]和needle[q]进行比较,此即内层循环,最多循环n次,即此字符开始和needle相同。

若没有完全匹配,则回溯到位置i的下一个位置,再次进行匹配操作。

提交ac的代码如下,运行时间为8ms:

class Solution {public:    int strStr(string haystack, string needle) {if(needle.empty())   //haystack.empty()&&return 0;int q;for(int i=0;i<haystack.length()-needle.length()+1;++i){q=0;while((i+q)<haystack.length()&&q<needle.length()&&haystack[i+q]==needle[q])++q;if(q==needle.length())return i;else if((i+q)==haystack.length())return  -1;}return -1;    }};







0 0