首页 > 代码库 > Implement strStr()
Implement strStr()
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()
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。