网站建设后如何修改wordpress 投稿 标签
news/
2025/10/2 22:34:34/
文章来源:
网站建设后如何修改,wordpress 投稿 标签,大连建设工程信息网防水,网络营销产品的五个层次28-实现 strStr()#xff08;easy#xff09;
给你两个字符串 haystack 和 needle #xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标#xff08;下标从 0 开始#xff09;。如果 needle 不是 haystack 的一部分#xff0c;则返回 -1 。
思路…28-实现 strStr()easy
给你两个字符串 haystack 和 needle 请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标下标从 0 开始。如果 needle 不是 haystack 的一部分则返回 -1 。
思路kmp算法实现关键是构建next数组
代码实现
class Solution {
public:void getNext(int* next, const string s) {int j 0;next[0] 0;for(int i 1; i s.size(); i) {while (j 0 s[i] ! s[j]) {j next[j - 1];}if (s[i] s[j]) {j;}next[i] j;}}int strStr(string haystack, string needle) {if (needle.size() 0) {return 0;}int next[needle.size()];getNext(next, needle);int j 0;for (int i 0; i haystack.size(); i) {while(j 0 haystack[i] ! needle[j]) {j next[j - 1];}if (haystack[i] needle[j]) {j;}if (j needle.size() ) {return (i - needle.size() 1);}}return -1;}
};时间复杂度O(nm)空间复杂度O(m)
详细解释 思路视频1 思路视频2 代码实现文章 459 重复的子字符串easy
给定一个非空的字符串 s 检查是否可以通过由它的一个子串重复多次构成。
思路1.移动匹配 2.kmp
1.移动匹配
当一个字符串sabcabc内部由重复的子串组成那么这个字符串的结构一定是这样的 也就是由前后相同的子串组成。
那么既然前面有相同的子串后面有相同的子串用 s s这样组成的字符串中后面的子串做前串前面的子串做后串就一定还能组成一个s如图 所以判断字符串s是否由重复子串组成只要两个s拼接在一起里面还出现一个s的话就说明是由重复子串组成。
当然我们在判断 s s 拼接的字符串里是否出现一个s的的时候要刨除 s s 的首字符和尾字符这样避免在ss中搜索出原来的s我们要搜索的是中间拼接出来的s。
2.kmp
在一个串中查找是否出现过另一个串这是KMP的看家本领。
KMP算法中next数组为什么遇到字符不匹配的时候可以找到上一个匹配过的位置继续匹配靠的是有计算好的前缀表。 前缀表里统计了各个位置为终点字符串的最长相同前后缀的长度。
那么 最长相同前后缀和重复子串的关系又有什么关系呢在由重复子串组成的字符串中最长相等前后缀不包含的子串就是最小重复子串
代码实现2
class Solution {
public:bool repeatedSubstringPattern(string s) {string t s s;t.erase(t.begin()); t.erase(t.end() - 1); // 掐头去尾if (t.find(s) ! std::string::npos) return true; // rreturn false;}
};时间复杂度O(n)空间复杂度O(1)
代码实现2
class Solution {
public:void getNext (int* next, const string s){next[0] 0;int j 0;for(int i 1;i s.size(); i){while(j 0 s[i] ! s[j]) {j next[j - 1];}if(s[i] s[j]) {j;}next[i] j;}}bool repeatedSubstringPattern (string s) {if (s.size() 0) {return false;}int next[s.size()];getNext(next, s);int len s.size();if (next[len - 1] ! 0 len % (len - (next[len - 1] )) 0) {return true;}return false;}
};时间复杂度O(n)空间复杂度O(n)
详细解释 思路视频 代码实现文章
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925369.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!