leetcode28
2017-07-31 22:52
127 查看
题目链接:https://leetcode.com/problems/implement-strstr/
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
思路:按照简单的做可以很简单,就是找一个字符串中是否包含另一个字符串,并返回其位置。按照复杂的做那么就是KMP了, 所以 看出题人的意思了.
代码如下:
[cpp]
view plain
copy
print?
class Solution {
public:
int strStr(string haystack, string needle) {
int i = -1, len1 = haystack.size(), len2 = needle.size();
while(++i <= len1-len2)
{
string tem = haystack.substr(i, len2);
if(tem == needle) return i;
}
return -1;
}
};
KMP
[cpp]
view plain
copy
print?
class Solution {
public:
int strStr(string haystack, string needle) {
int i, k = 0, len1 = haystack.size(), len2 = needle.size();
if(len2==0 || haystack == needle) return 0;
vector<int> index(len2, 0);
for(i = 1; i < len2; i++)
{
while(k>0 && needle[i]!=needle[k]) k = index[k-1];
index[i] = (k+=needle[i]==needle[k]);
}
for(i = 0, k = 0; i < len1; i++)
{
while(k>0 && haystack[i]!=needle[k]) k = index[k-1];
k += needle[k] == haystack[i];
if(k == len2) return i-len2+1;
}
return -1;
}
};
转自小榕流光的博客
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
思路:按照简单的做可以很简单,就是找一个字符串中是否包含另一个字符串,并返回其位置。按照复杂的做那么就是KMP了, 所以 看出题人的意思了.
代码如下:
[cpp]
view plain
copy
print?
class Solution {
public:
int strStr(string haystack, string needle) {
int i = -1, len1 = haystack.size(), len2 = needle.size();
while(++i <= len1-len2)
{
string tem = haystack.substr(i, len2);
if(tem == needle) return i;
}
return -1;
}
};
class Solution { public: int strStr(string haystack, string needle) { int i = -1, len1 = haystack.size(), len2 = needle.size(); while(++i <= len1-len2) { string tem = haystack.substr(i, len2); if(tem == needle) return i; } return -1; } };
KMP
[cpp]
view plain
copy
print?
class Solution {
public:
int strStr(string haystack, string needle) {
int i, k = 0, len1 = haystack.size(), len2 = needle.size();
if(len2==0 || haystack == needle) return 0;
vector<int> index(len2, 0);
for(i = 1; i < len2; i++)
{
while(k>0 && needle[i]!=needle[k]) k = index[k-1];
index[i] = (k+=needle[i]==needle[k]);
}
for(i = 0, k = 0; i < len1; i++)
{
while(k>0 && haystack[i]!=needle[k]) k = index[k-1];
k += needle[k] == haystack[i];
if(k == len2) return i-len2+1;
}
return -1;
}
};
转自小榕流光的博客
相关文章推荐
- LeetCode之路——LeetCode_28_Implement strStr()
- LeetCode 28 Implement strStr() (C,C++,Java,Python)
- LeetCode 25-28
- 【leetcode题解】【28】【E】Palindrome Number
- [LeetCode]28. Search a 2D Matrix矩阵查找
- [leetcode 28] Implement strStr()
- LeetCode Weekly Contest 28
- LeetCode Weekly Contest 28解题思路
- LeetCode 28:Implement strStr()
- Leetcode#28 Implement strStr()
- LeetCode (28)Implement strStr()
- LeetCode 28 Implement strStr()
- <算法Java实现--LeetCode(1)(28)>2017-10-21
- leetcode-28 Implement strStr()
- leetcode-28-Implement strStr()
- leetcode 28 -- Implement strStr()
- LeetCode 28 Implement strStr()
- Leetcode 28 Implement strStr() KMP算法
- LeetCode(28)-Remove Duplicates from Sorted Array
- LeetCode(28) Implement strStr()