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

Implement strStr()

时间:2014-10-27 10:43:49      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   strong   sp   div   

Implement strStr().

Returns a pointer to the first occurrence of needle in haystack, or null if needle is not part of haystack.

思路:KMP算法算是忘得一干二净,回头有时间看看,自己实现了一个复杂度高的,即从源字串中第一个开始遍历,把目标字串的每一个字符和源字串比对,若相同则找到,若不同,则跳出内存循环,从源字串的第二个字符再开始比对。

收获:注意区分haystack=NULL和haystack=""的区别。实际上NULL即0,也就是空指针,所以当haystack=NULL的时候,它是不指向任何东西的,所对应的内存也是空的;

而当haystack="";等价于haystack="\0",此时该指针是确实指向了内存中某个区域的,所以我们对该指针进行操作,是不会出错的,而对空指针的任何操作都是没有定义的

特殊用例:haystack="\0";needle="\0";可以在haystack的第一个字符找到目标字符串,所以返回不是NULL,而是"",也即"\0".

代码:

class Solution {
public:
    char *strStr(char *haystack, char *needle) {
        if(!haystack||!needle)
            return NULL;
        int len_h=strlen(haystack);
        int len_n=strlen(needle);
        if(len_h==0&&len_n==0)
            return haystack;
        else if(len_h!=0&&len_n==0)
            return (haystack+len_h-1);
        int i;
        int org_i;
        int j=0;
        for(i=0;i<=len_h-len_n;++i)
        {
            org_i=i;
            j=0;
            while(org_i<len_h&&j<len_n&&(*(haystack+org_i)==*(needle+j)))
            {
                ++org_i;
                ++j;
            }
            if(j==len_n)
                return haystack+i;
        }   
        return NULL;
            
    }
};

 

Implement strStr()

标签:style   blog   color   io   ar   for   strong   sp   div   

原文地址:http://www.cnblogs.com/fightformylife/p/4053440.html

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