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

Implement strStr()

时间:2015-04-05 21:42:48      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:

Implement strStr().

Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

class Solution {
public:
    int strStr(char *haystack, char *needle) {
        if(!*needle) return 0;
        char *p1=haystack;
        char *p2;
        char *p1_advance=haystack;//此值用于保证haystack的剩余长度大于needle
        char *p1_old=haystack;
        p2=needle+1;//注意此处的初始值
        while(*p2!=\0){
            p1_advance++;
            p2++;
        }
        for(;*p1_advance!=\0;p1_advance++){
            p1=p1_old;//从上次遍历起始位置的下一个字符开始
            p2=needle;
            while(*p1!=\0&&*p2!=\0&&*p1==*p2){
                p1++;
                p2++;
            }
            if(*p2==\0)return p1_old-haystack;//如果needle遍历完,说明匹配成功,可返回
            p1_old++;
        }
        return -1;
        
    }
};

此为暴力法,复杂度O(m*n),空间复杂度为O(1)。另有KMP解法,通过计算部分匹配表优化。时间复杂度可优化为O(N+M)

Implement strStr()

标签:

原文地址:http://www.cnblogs.com/qiaomu/p/4394787.html

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