[LeetCode]28. Implement strStr()
来源:互联网 发布:淘宝代购可以退货吗 编辑:程序博客网 时间:2024/06/05 01:07
Description
Implement strStr().
Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.
Discussion
判断needle
是否是haystack
的子串,并返回子串的起始位置。
暴力破解法。每次判断haystack
串的i~i+m
子串是否与needle
相等。
算法的时间复杂度为O(nm)
。
Rabin-Karp字符串查找算法
。一种非常经典的算法。每次从haystack
中取出长度为m
的子串,然后将该子串进行哈希,并将其哈希值与needle
串的哈希值进行比较。若哈希值相等再把相关字符一一比较。
算法的时间复杂度为O(mn)
,实际使用中一般认为是O(n + m)
。
Rolling Hash。https://en.wikipedia.org/wiki/Rolling_hash
算法的时间复杂度为O(n)
。
C++ Code
仅给出暴力破解代码。
class Solution {public: int strStr(string haystack, string needle) { int n = haystack.length(); int m = needle.length(); if(n < m) { return -1; } for(int i = 0; i < n - m + 1; i++) { int isStr = 1; //判断i~i+m是否与haystack相等。 for(int j = 0; j < m; j++) { if(haystack[i + j] != needle[j]) { isStr = 0; break; } } if(isStr) { return i; } } 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()
- Atlantis(线段树+扫描线+离散化)
- 梯度、散度、旋度的关系
- Android 获取assets文件夹中的图片资源
- 阿里云CentOS7中安装Redis
- git 和 jenkings 和svn 简单使用和介绍
- [LeetCode]28. Implement strStr()
- 风格转换01~对开山之作的数学公式理解
- java RXTXcomm 串口通信
- 记录我的Java学习经历(5)
- iOS中保证线程安全的几种方式与性能对比
- 懒人读算法(十二)-两个和下标
- Knn算法(机器学习)入门(Python实现)
- Integer.MIN_VALUE和Integer.MAX_VALUE
- 阿里云CentOS7中安装MySQL5.7.19