题目描述
一年一度的春招就要到来了,牛牛为了备战春招,在家刷了很多道题,所以牛牛非常喜欢AC这两个字母。他现在有一个只包含A和C的字符串,你可以任意修改最多k个字符,让A变成C,或者C变成A。请问修改完之后,最长连续相同字符的长度是多少。
示例1
输入
复制
1,"AAAC"
输出
复制
4
说明
样例一:将最后一位C改成A即可。
备注:
字符串长度<=10^6,且只包含'A'和'C',k<=10^6。
解题思路:
通过维护两个变量a,c.当a>k&&c>k时,就跑一个"指针"变量i来去除字符串前面的长度,因为当a<=k或者c<=k时k就可以将其中不相同的字符全部变成相同的,然后长度就取字符串的差值长度,并且不断更新最大值
AC代码:
import java.util.*;
public class Solution {
/**
*
* @param k int整型
* @param s string字符串
* @return int整型
*/
public int Solve (int k, String s) {
int max=0,i=0,a=0,c=0;
for(int j=0;j<s.length();j++){
if(s.charAt(j)=='A')a++;
else c++;
while(a>k&&c>k){
if(s.charAt(i)=='A')a--;
else c--;
i++;
}
max=Math.max(j-i+1,max);
}
return max;
}
}