题解 | #至多包含K种字符的子串#

至多包含K种字符的子串

https://www.nowcoder.com/practice/04c926ef687340c3842a72edb5c23ede

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param s string字符串
     * @param k int整型
     * @return int整型
     */
    public int longestSubstring (String s, int k) {
        // write code here
        int left = 0, right = 0, count = 0, subcount = 0;
        HashMap<Character, Integer> frequency = new HashMap<>();

        while(right<s.length()){
            int value = frequency.getOrDefault(s.charAt(right), 0) + 1;
            frequency.put(s.charAt(right), value);
            right++;
            if (value == 1) {
                count++;
            }

            if (count <= k) {
                subcount = Math.max(subcount, right - left);
            }

            if (count > k) {
                int subValue = frequency.getOrDefault(s.charAt(left), 0) - 1;
                frequency.put(s.charAt(left), subValue);
                left++;
                if (subValue == 0) {
                    count--;
                }
            }
        }

        return subcount;
    }
}

滑动窗口解法,左右移动

#23届找工作求助阵地##我的实习求职记录#
全部评论

相关推荐

预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
投递华为等公司10个岗位 >
点赞 评论 收藏
分享
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务