本文主要是介绍代码随想录算法训练营第九天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
28. 实现 strStr() (本题可以跳过)
方法:
方法一: 暴力法
i 表示最多能移动到n-m位置, 超过则退出循环。j表示haystack 初始位置k表示needle的初始位置如果haystack [j]== needle[k]且 k<m 则 j++, k++; 如果 k==m 则返回i;退出大循环 不满足 返回-1;
注意:
代码:
class Solution {
public:int strStr(string haystack, string needle) {int n= haystack.size();int m = needle.size();for(int i=0; i<=n-m; i++){int j = i;int k=0;while(k <m &&haystack[j]== needle[k]){j++;k++;}if(k==m){return i;}}return -1;}
};
方法:
方法二: == KMP算法 ==
1. 构建next数组2. 匹配
注意:
代码:
459.重复的子字符串 (本题可以跳过)
方法:
方法一: 技巧
将s累加起来 变成ss将ss去掉 首元素 与伪元素 若能在ss中找到 s 则 返回true 否则返回 false
注意:
代码:
class Solution {
public:bool repeatedSubstringPattern(string s) {string ss=s+s;ss.erase(ss.begin());ss.erase(ss.end()-1);if(ss.find(s) != -1){return true;}return false;}
};
这篇关于代码随想录算法训练营第九天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!