注意如果输入的两个字符串都是空:应该返回0:因为任何字符串都可以匹配空字符串,所以返回开始的下标。对于C++很少用到strStr()方法。
/* strstr example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="This is a simple string";
char * pch;
pch = strstr (str,"simple");
strncpy (pch,"sample",6);
puts (str);
return 0;
}
http://www.cplusplus.com/reference/cstring/strstr/
leetcode 答案:
C++:
int strStr(string haystack, string needle) {
if(needle.size()==0)
return 0;
int m=haystack.size();
int n=needle.size(),j=0;
for(int i=0;i<=m-n;i++){
for(j=0;j<n;j++){
if(haystack[i+j]!=needle[j])
break;
}
if(j==n)
return i;
}
return -1;
}
Java:
public int strStr(String haystack, String needle) {
if(needle.length()==0)
return 0;
int m=haystack.length();
int n=needle.length(),j=0;
for(int i=0;i<=m-n;i++){
for(j=0;j<n;j++){
if(haystack.charAt(i+j)!=needle.charAt(j))
break;
}
if(j==n)
return i;
}
return -1;
}