码迷,mamicode.com
首页 > 其他好文 > 详细

OJ练习13——T28 Implement strStr()

时间:2015-04-14 09:51:37      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

实现字符串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实现的,顺便复习一下。

 

OJ练习13——T28 Implement strStr()

标签:

原文地址:http://www.cnblogs.com/ketchups-notes/p/4423978.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!