实现字符串strstr()的功能,即从母串中查找子串第一次出现的位置(序号),没有出现则返回-1.
【思路】
刚开始学c时就学到过这个例子。
不同之处在于,这里参数是string,处理起来要比char*简单。
【my code】
int strStr(string haystack, string needle) { if(needle=="") return 0; if(haystack.size()<needle.size()) return -1; int i=0, j=0, k; for(i=0; i<=haystack.size()-needle.size(); i++) { k=i; j=0; while(j<needle.size()) { if(haystack[k]==needle[j]) { k++;j++; } else break; } if(j==needle.size()){ return i; } } return -1; }
【出现的问题】
1.输入("", "")和("abcd", ""),("a", "aaaa")的特殊情况都要考虑;
2.易错!——最外层for循环,i的范围应该在i<=haystack.size()-needle.size(),否则会发生越界,报错为:
time limit exceed(like this?)
一定要注意数组越界访问的问题!
【番外】
看到网上有用KMP实现的,顺便复习一下。
时间: 2024-11-05 20:26:58