Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Seen this question in a real interview before?
Yes
给定字符串A和字符串B,查看B是否是A的子串,如果是,返回B在A串中的首字母的指针索引,如果没有,则返回-1
class Solution {
public:
int strStr(string haystack, string needle) {
for(int i=0;;i++)
{
for(int j=0;;j++)
{
if(j==needle.size())
return i;
if(i+j == haystack.size())
return -1;
if(needle[j]!=haystack[i+j])
break;
}
}
}
};
或者感觉前面的难懂:可以这样:
class Solution {
public:
int strStr(string haystack, string needle) {
if(needle.empty())
return 0;
int h1 = haystack.length();
int h2 = needle.length();
if(h1<h2)
return -1;
if(h1==h2)
return haystack==needle ? 0 : -1;
int i;
for(i=0;i<h1;i++)
{
bool found=true;
for(int j=0;j<h2;j++)
{
if(haystack[i+j]!=needle[j])
{
found = false;
break;
}
}
if(found) //如果在i=0的时候完美匹配,那么就直接跳出循环
break;
}
return i > h1-h2 ? -1 : i;
}
};