zoukankan      html  css  js  c++  java
  • LeetCode——Longest Repeating Character Replacement

    1. Question

    Given a string that consists of only uppercase English letters, you can replace any letter in the string with another letter at most k times. Find the length of a longest substring containing all repeating letters you can get after performing the above operations.

    Note:
    Both the string's length and k will not exceed 104.

    Example 1:

    Input:
    s = "ABAB", k = 2

    Output:
    4

    Explanation:
    Replace the two 'A's with two 'B's or vice versa.
    Example 2:

    Input:
    s = "AABABBA", k = 1

    Output:
    4

    Explanation:
    Replace the one 'A' in the middle with 'B' and form "AABBBBA".
    The substring "BBBB" has the longest repeating letters, which is 4.

    2. Solution

    1. 求一个字符串转变成全部一样字符的字符串所需要的最小步骤数

    length of the entire string - number of times of the maximum occurrin character in the string

    1. 最多k次改变的限制,维持一个滑动窗口

    (length of substring - number of times of the maximum occurring character in the substring) <= k

    3. Code

    class Solution {
    public:
        int characterReplacement(string s, int k) {
            // sliding window
            int len = s.length();
            vector<int> vec(26, 0);
            int maxValue = 0;
            int start = 0;
            int res = 0;
            for (int end = 0; end < len; end++) {
                vec[s[end] - 'A']++;
                // 表示start~end之间出现次数最多的字符个数
                maxValue = max(maxValue, vec[s[end] - 'A']);
                // 滑动start,一直到满足条件
                while (end - start + 1 - maxValue > k) {
                    vec[s[start] - 'A']--;  // 滑掉的需要去掉
                    start++;
                }
                res = max(res, end - start + 1);
            }
            return res;
        }
    };
    
  • 相关阅读:
    解决AVAST杀毒软件导致系统启动缓慢的问题
    HTML 测验 1
    tar 命令详解
    Vmware 中Linux与Windows共享方法
    用VMtool Share功能编译内核导致失败的问题
    C盘空间不足的解决方法
    DNW下USB驱动故障的解决
    KDE vs. GNOME:一位用户的经验之谈
    NTFS压缩过程中电脑断电的问题
    Environment Setup Instruction[Android]
  • 原文地址:https://www.cnblogs.com/zhonghuasong/p/7786986.html
Copyright © 2011-2022 走看看