leetcode 子串位置的寻找
2016-10-13 21:18
183 查看
28. Implement strStr()
Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Subscribe to see which companies asked this question
这个是求子串的位置,仔细想想并没有那么简单,说说这段代码的思路
如果字符为空指针,返回-1;
如果寻找的字符为空,那么返回0
使用while来遍历,如果一直相等就一直执行,直到最后,如果中间有不相等的,那么就从上一个位置的后一个位置开始(这里可以使用kmp来做,个人不是很熟悉),然后最后根据是否到达了寻找串的尾部来判断是否寻找成功
代码:
int strStr(char* haystack, char* needle) {
if(!haystack||!needle) return -1;
else if(*needle=='\0') return 0;
int result=-1;
int i=0,j=0;
while(needle[i]!='\0'&&haystack[j]!='\0'){
if(needle[i]==haystack[j]){
if(result==-1) result=j;
i++;j++;
}else{
j=(result==-1)?j+1:result+1;
i=0;
result=-1;
}
}
return (needle[i]!='\0')?-1:result;
}
相关文章推荐
- [LeetCode]—Implement strStr() 寻找子串匹配第一个位置 (KMP)
- 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
- 【codevs1204】寻找子串位置 kmp
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- leetcode596:496. Next Greater Element I(寻找元素对应位置的下一个较大值)
- 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
- codevs 1204 寻找子串位置
- 算法4.1 在一个字符串寻找子串,并返回位置
- [1204 寻找子串位置] 解题报告
- 寻找子串在主串中的位置
- 写一个在一个字符串(n)中寻找一个子串(m)第一个位置的函数
- 寻找子串的位置
- 【CODEVS1204】寻找子串位置
- codevs 1204 寻找子串位置
- wikioi p1204 寻找子串位置
- LeetCode 28Implement strStr() 寻找子字符串的下标的位置
- 寻找子串位置之string用法
- codevs 1204寻找子串位置(kmp算法)
- 实现strstr 功能,即在父串中寻找子串首次出现的位置。
- 【codevs】1204 寻找子串位置(KMP模板,比模板还模板)