[leetcode Q28] Implement strStr()
2016-02-27 15:14
288 查看
实现 c 函数 strstr()
Implement strStr().Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
返回子字符串在原字符串中第一次匹配的位置,否则放回 -1
实现还是比较简单的就是需要注意一些细节
思路
检查输入遍历原字符串
记忆与子串第一个字符匹配的位置,设置两个指针分别向后移
检查循环结束条件,作出相应的返回
值得注意的是,在两个指针分别后移动过程中,开始我是向下面这样写的:
[code]while(haystack[i] && needle[i] && haystack[i++] == needle[j++]) ; if (j == needle.size()) return match; i = match;
这样对下面的输入 [input] 会报错:
[code]"mississippi" "issip"
原因主要在于如果
while是由
haystack[i] != needle[j]结束的话,
i, j都会向后移动依次,如果下文需要
i, j用于判断,则容易出错。
实现
[code]class Solution { public: int strStr(string haystack, string needle) { if(needle == "") return 0; if(haystack == "") return -1; size_t j = 0; size_t match, i; for(i = 0; i < haystack.size(); i++){ if(haystack[i] == needle[0]) { j = 1; match = i; i++; while(haystack[i] && needle[j] && haystack[i] == needle[j]) { i++; j++; } if (j == needle.size()) return match; else if(i == haystack.size()) return -1; i = match; } } if (j != haystack.size()) return -1; } };
相关文章推荐
- 关于ViewPager
- 初学 Java Web 开发,请远离各种框架,从 Servlet 开发
- 百度地图报错 uncaught exception (group=0x416f2e00)
- 千里码【65】可视化_1
- 【rabbitmq】解决SimpleAmqpClient创建连接时阻塞的问题
- 基于 Apache 在本地配置多个虚拟主机
- 边缘检测
- HDU 5294 Tricks Device(最短路+最大流)
- 在Eclipse中使用JUnit4进行单元测试(高级篇)
- 第三届_银行密码
- MVVM设计模式具体实现
- Ulua_toLua_基本案例(一)
- 004_Http之response响应头
- 左侧容器高度随着右侧容器的高度改变而改变
- CodeForces - 280D k-Maximum Subsequence Sum 线段树模拟费用流操作
- listview单个刷新item
- moveZeroes--JavaScript
- SpringMVC实现poi 解析excel 导入导出
- log4j【8】(slf4j)
- adb断开解决方法