博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode -- Implement strStr()
阅读量:5886 次
发布时间:2019-06-19

本文共 1771 字,大约阅读时间需要 5 分钟。

反正总是有人要赢,那为什么不能是我呢~

 [问题描述]

Implement strStr().

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

[解题思路]

1.KMP. 2.暴力

1 char *Solution::strStr(char* haystack, char* needle) 2 { 3     if (haystack == NULL || needle == NULL) 4         return NULL; 5     if (needle[0] == '\0') 6         return haystack; 7     int next[strlen(needle)];//计算nextval 8     int i = 0, j = -1; 9     next[i] = -1;10     while (needle[i] != '\0'){11         if (j == -1 || needle[i] == needle[j]){12             i++, j++; next[i] = j;13         }14         else{15             j = next[j];16         }17     }18     i = 0, j = 0;//匹配字符串19     char* ans = NULL;20     while (haystack[i] != '\0'){21         while (j >= 0 && haystack[i] != needle[j])22             j = next[j];23         i++; j++;24         if (needle[j] == '\0'){25             ans = haystack + i - j;26             return ans;27         }28     }29     return ans;30 }

暴力有效的方法1:

1 char *strStr(char *haystack, char *needle) 2  { 3     if(needle == NULL) return haystack; 4     else{ 5         int len1 =strlen(haystack),len2 = strlen(needle); 6         if(len2 == 0) return haystack; 7         for(int i = 0 ; i < len1-len2+1; ++ i){ 8             if(strncmp(haystack+i,needle,len2) == 0) return haystack+i; 9         }10         return NULL;11     }12 }

暴力有效的方法2:

1 char *strStr(char *haystack, char *needle)  2 { 3     int i,j;   4     for (i = j = 0; haystack[i] && needle[j];) {   5         if (haystack[i] == needle[j]) {   6             ++i;   7             ++j;   8         } else {   9             i = i - j + 1;  10             j = 0;  11         }  12     }  13     return needle[j] ? 0 : (haystack + i - j);  14 }

 

转载于:https://www.cnblogs.com/taizy/p/3914581.html

你可能感兴趣的文章
Python3之多线程学习
查看>>
MVC和MTV结构分析
查看>>
(转)微信网页扫码登录的实现
查看>>
mariadb启动报错:[ERROR] Can't start server : Bind on unix socket: Permission denied
查看>>
nginx的信号量
查看>>
云im php,网易云IM
查看>>
河南农业大学c语言平时作业答案,河南农业大学2004-2005学年第二学期《C语言程序设计》期末考试试卷(2份,有答案)...
查看>>
c语言打开alist文件,C语言 文件的打开与关闭详解及示例代码
查看>>
c语言 中的共用体和结构体如何联合定义,结构体(Struct)、联合体(Union)和位域
查看>>
SDL如何嵌入到QT中?!
查看>>
P1026 统计单词个数
查看>>
[js高手之路] html5 canvas系列教程 - 状态详解(save与restore)
查看>>
poi excel 常用api
查看>>
AD提高动态的方法(附SNR计算)
查看>>
[转]轻松实现可伸缩性,容错性,和负载平衡的大规模多人在线系统
查看>>
五 数组
查看>>
也谈跨域数据交互解决方案
查看>>
EntityFramework中使用Include可能带来的问题
查看>>
面试题28:字符串的排列
查看>>
css important
查看>>