zoukankan      html  css  js  c++  java
  • 424. Longest Repeating Character Replacement

    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.
    

      窗口指针状态的更新和题意的结合: 

    count = Math.max(count, ++sum[s.charAt(fast) - 'A']);
                while (fast - slow + 1 - count > k) {
                    sum[s.charAt(slow) - 'A']--;
                    slow++;
                }
    public int characterReplacement(String s, int k) {
            if (s == null || s.length() == 0) {
                return 0;
            }
            int[] sum = new int[26];
            int slow = 0, fast = 0, count = 1, ans = 1;
            while (fast < s.length()) {
                count = Math.max(count, ++sum[s.charAt(fast) - 'A']);
                while (fast - slow + 1 - count > k) {
                    sum[s.charAt(slow) - 'A']--;
                    slow++;
                }
                
                ans = Math.max(ans, fast - slow + 1);
                fast++;
            }
            return ans;
        }
    

      

  • 相关阅读:
    点双连通分量
    CF 839 E-最大团
    线性基
    CF 859 E
    【bzoj1303】[CQOI2009]中位数图
    【bzoj2282】[Sdoi2011]消防
    【bzoj2654]】tree
    【bzoj2600】 [Ioi2011]ricehub
    【bzoj4027】 [HEOI2015]兔子与樱花
    【bzoj3670】 [Noi2014]动物园
  • 原文地址:https://www.cnblogs.com/apanda009/p/7566560.html
Copyright © 2011-2022 走看看