[leetcode]#28. Implement strStr()
来源:互联网 发布:网络代理平台 编辑:程序博客网 时间:2024/06/05 05:13
题目翻译
实现 strStr() 函数。该函数用于判断一个字符串 needle 是否是另一个字符串 haystack 的子串。如果是,则该函数返回 needle 在 haystack 中首次出现的地址;否则,返回-1。扫描haystack,当遇到与needle首字符相同的位置时,检查haystack从该位置开始的与needle长度相同的块,与needle是否相同
if not needle: return 0 for i in xrange(len(haystack) - len(needle) + 1): if haystack[i] == needle[0]: j = 1 while j < len(needle) and haystack[i+j] == needle[j]: j += 1 if j == len(needle): return i return -1
- 鉴于这是一个模式匹配问题,我们可以考虑KMP算法。该算法对于任何模式和目标序列,都可以在线性时间内完成匹配查找(O(n+m)),而不会发生退化。这里不再细讲算法原理,只实现了代码。
class Solution(object): def strStr(self, haystack, needle): """ :type haystack: str :type needle: str :rtype: int """ if not needle: return 0 #generate next array, need O(n) time i, j, m, n = -1, 0, len(haystack), len(needle) next = [-1] * n while j < n - 1: #needle[k] stands for prefix, neelde[j] stands for postfix if i == -1 or needle[i] == needle[j]: i, j = i + 1, j + 1 next[j] = i else: i = next[i] #check through the haystack using next, need O(m) time i = j = 0 while i < m and j < n: if j == -1 or haystack[i] == needle[j]: i, j = i + 1, j + 1 else: j = next[j] if j == n: return i - j return -1
阅读全文
0 0
- [LeetCode]28.Implement strStr()
- LeetCode --- 28. Implement strStr()
- LeetCode 28.Implement strStr()
- [Leetcode] 28. Implement strStr()
- 【leetcode】28. Implement strStr()
- [leetcode] 28.Implement strStr()
- Leetcode-28.Implement strStr()
- 28. Implement strStr() LeetCode
- leetcode 28. Implement strStr()
- [LeetCode]28. Implement strStr()
- leetcode 28. Implement strStr()
- Leetcode 28. Implement strStr()
- leetcode 28.Implement strStr()
- LeetCode *** 28. Implement strStr()
- LeetCode 28. Implement strStr()
- leetcode-28. Implement strStr()
- leetcode 28. Implement strStr()
- leetcode 28. Implement strStr()
- httpclient中的post请求
- Java 面试题:百度前200页都在这里了
- Mac 电脑 配置Mysql 默认编码utf8
- 微信公众号相应消息 ,自动回复消息
- 导出excel封装
- [leetcode]#28. Implement strStr()
- RecyclerView的item点击,长按事件
- 模块API之sprint_symbol
- scrapy的第一个爬虫
- mongodb中批量将时间戳转变通用日期格式
- “集百度AI技术之大成的终极硬件形态”发布
- SQL中的数据类型
- python数字图像处理笔记
- Groq新进展!谷歌TPU原班人马明年发布首款AI芯片