小小蒟蒻的菜鸟题解,希望各位大佬不要嫌弃

思路就是简单的模拟滑动窗口,下方代码有详细注解

感觉对初学者可能更好理解一点

但是本蒟蒻觉得判断字符串中是否有重复字符串的函数略显复杂,不知各位大佬有何更好办法,希望各位大佬可以留言让本蒟蒻学习一下

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;
    }
};

弱弱地说一句:求......赞赞可以吗