424. 替换后的最长重复字符
作者:互联网
使用双指针解决
避免双层循环 时间复杂度O(N)
代码算是写的简单好懂
主要是像ABBB这样left第二次会从B开始 但是可变换次数还有剩余的情况下,可以向前进行变换
public int characterReplacement(String s, int k) {
int ans=0,count=0,sum_k=k;
int left=0,right=0;
char flag;
while(left<s.length() && right<s.length()){
flag = s.charAt(left);
if (s.charAt(right)==flag){
count++;
right++;
}else {
if (sum_k>0){
count++;
right++;
sum_k--;
}else {
left++;
right=left;
sum_k=k;
count=0;
}
}
if (right==s.length()){
count+=sum_k;
if (count>s.length()){
count=s.length();
}
}
if (count>=ans){
ans=count;
}
}
return ans;
}
标签:count,字符,right,++,sum,替换,int,424,left 来源: https://blog.csdn.net/weixin_45221477/article/details/113638172