424. Longest Repeating Character Replacement

题意:

在只允许置换K次的情况下,返回子字符串全部是相同字符的最长长度。

题解:

在low high 之间统计处每个字符出现的频数,取出最大的maxi ,如果high-low+1 - maxi >K说明不满足题意,low++,然后将这个字符的频数-1,这个操作可以使得map存放的数据一直是low和high之间字符的频数。.反之high++.

class Solution {
public:
    int characterReplacement(string s, int k) {
        int n=s.size();
        int i=0, j=0, maxi=0;
        unordered_map map;
        int ans=-1;
        while(j k ){
                map[s[i]]--;
                i++;
            }
            ans = max(ans, j-i+1);
            j++;
        }
        return ans;
    }
};

你可能感兴趣的:(leetcode,leetcode,算法)