424. Os maiores caracteres repetidos após a substituição
Dar-lhe uma string composta de letras maiúsculas somente, você pode estar em qualquer lugar sobre os caracteres substituídos por outros caracteres, pode substituir-se a um total de k vezes. Depois de realizar a operação acima é repetido para encontrar o comprimento das cadeias mais longas de letter sub-contendo.
Nota: O
comprimento da corda k e não mais do que 104.
Exemplo 1:
Entrada:
S = "ABAB", K = 2
Saída:
4
Explicação:
substituído com dois 'A' dois 'B', e vice-versa.
Exemplo 2:
Entrada:
S = "AABABBA" ,. 1 K =
Saída:
4
Explicação:
No meio de um 'A' é substituído por 'B', a corda se torna "AABBBBA".
Substring "BBBB" tem as cartas mais longa repetidas, a resposta é quatro.
class Solution {
public int characterReplacement(String s, int k) {
char[] chars = s.toCharArray();
int width = 0;
for (int left = 0, right = 0, counts[] = new int[26]; right < chars.length; right++) {
width = Math.max(width, ++counts[chars[right] - 'A'] + k);
while (right - left + 1 > width)
counts[chars[left++] - 'A']--;
}
return Math.min(chars.length, width);
}
}