leetcode 28 strStr()

圖片.png
注意如果輸入的兩個字串都是空:應該返回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; }

圖片.png
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; }