小小蒟蒻的菜鸟题解,希望各位大佬不要嫌弃
思路就是简单的模拟滑动窗口,下方代码有详细注解
感觉对初学者可能更好理解一点
但是本蒟蒻觉得判断字符串中是否有重复字符串的函数略显复杂,不知各位大佬有何更好办法,希望各位大佬可以留言让本蒟蒻学习一下
class Solution {
public:
bool V(string a){ //若不是字符串的首尾字符相同,则判断字符串中是否有重复字符;
for(int i=0;i<a.size();i++){
int t=0;
for(int j=0;j<a.size();j++){
if(a[i]==a[j]){
t++;
}
}
if(t>1){
return true;
}
}
return false;
}
int numKLenSubstrRepeats(string s, int k) {
// write code here
int n=s.size(),r=0,l=0,Max=0;
string a="";
while(r<n){
if(r-l+1==k){ //若字符串长度达到k值,则进入判断;
if(a.find(s[r])!=-1||V(a)){ //字符串中有重复的字符,则Max加一;
Max++;
}
a.erase(a.begin()); //不论有无重复字符,字符串都应该变短,使窗口变小,删除第一个元素;
l++; //窗口左边界加一,窗口变小;
}
a+=s[r];//字符串增加;
r++;//窗口向右变大;
}
return Max;
}
};
弱弱地说一句:求......赞赞可以吗



京公网安备 11010502036488号