题意为判断一个字符串是否出现在另外一个字符串中,存在则返回其第一次出现的位置,否则返回-1.
class Solution {
public:
int strStr(char *haystack, char *needle) {
int Len1=strlen(haystack);
int Len2=strlen(needle);
if(Len1<Len2) return -1;
if(Len2==0)
return 0;
for(int i=0;i<Len1;++i)
{
int j=0;
int k=i;
if(i>Len1-Len2)//这一句可用于剪枝,后面的就不需要判断了
return -1;
while(k<Len1&&j<Len2&&haystack[k]==needle[j])
{
++k;
++j;
}
if(j==Len2)
return i;
}
return -1;
}
};
在上面的代码中,如果去点下面这一句,就会报错: Time Limit Exceeded
if(i>Len1-Len2)//这一句可用于剪枝,后面的就不需要判断了
return -1;