题目
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Update (2014-11-02):
The signature of the function had been updated to return the index instead of the pointer. If you still see your function signature returns a char * or String, please click the reload button to reset your code definition.
题目来源:https://leetcode.com/problems/implement-strstr/
分析
用两个指针直接扫描。时间复杂度O(m*n)。如果haystack剩下的长度小于needle的长度时就不用继续比较了。
代码
class Solution {
public:
int strStr(string haystack, string needle) {
int len_hay = haystack.length();
int len_nee = needle.length();
if(len_hay == 0 && len_nee == 0)
return 0;
if(len_nee == 0)
return 0;
if(len_hay < len_nee)
return -1;
int i_hay = 0, i_nee = 0;
while(i_hay <= (len_hay - len_nee)){
int i_h = i_hay, i_n = 0;
while(haystack.at(i_h) == needle.at(i_n)){
i_h++;
i_n++;
if(i_h >= len_hay || i_n >= len_nee)
break;
}
if(i_n >= len_nee)
return i_hay;
i_hay++;
}
return -1;
}
};
本文介绍如何实现strStr()函数,该函数用于查找一个字符串在另一个字符串中首次出现的位置索引。通过双指针法遍历并比较字符串,实现O(m*n)的时间复杂度。
332

被折叠的 条评论
为什么被折叠?



