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

      

  • 相关阅读:
    vim高亮
    mengning
    4.4内核osal
    tmpvalgrind
    为什么引入协程
    alloc_call_show(转)
    TSAN
    如何查看哪些进程占用Buffer和Cache高(转)
    ASAN详解其他参考链接
    Linux系统与程序监控工具atop教程(转)
  • 原文地址:https://www.cnblogs.com/apanda009/p/7566560.html
Copyright © 2011-2022 走看看