可以用c的方法
1 class Solution { 2 public: 3 char *strStr(char *haystack, char *needle) { 4 // IMPORTANT: Please reset any member data you declared, as 5 // the same Solution instance will be reused for each test case. 6 int haylen = strlen(haystack); 7 int needlen = strlen(needle); 8 for (int i = 0; i <= haylen-needlen; i++) { 9 char *p = haystack + i; 10 char *q = needle; 11 while (*q != '\0' && *p == *q) { 12 p++, q++; 13 } 14 if (*q == '\0') return haystack + i; 15 } 16 return NULL; 17 } 18 };
再贴段更加清晰的代码
1 class Solution { 2 public: 3 char *strStr(char *haystack, char *needle) { 4 // Start typing your C/C++ solution below 5 // DO NOT write int main() function 6 string S, T; 7 for (int i = 0; *(haystack+i) != '\0'; i++) S += *(haystack+i); 8 for (int i = 0; *(needle+i) != '\0'; i++) T += *(needle+i); 9 int m = S.size(); 10 int n = T.size(); 11 if (!n) return haystack; 12 for (int i = 0; i < m-n+1; i++) { 13 if (S.substr(i, n) == T) return haystack+i; 14 } 15 return NULL; 16 } 17 };
1 public class Solution { 2 public int StrStr(string haystack, string needle) { 3 if (needle.Length == 0) return 0; 4 for (int i = 0; i < haystack.Length - needle.Length + 1; i++) { 5 if (haystack.Substring(i, needle.Length) == needle) return i; 6 } 7 return -1; 8 } 9 }