建设工程项目在哪个网站查询,wordpress自定义远程字体,江门做公司网站,wordpress会员查看内容收费给你一个仅由大写英文字母组成的字符串#xff0c;你可以将任意位置上的字符替换成另外的字符#xff0c;总共可最多替换 k 次。在执行上述操作后#xff0c;找到包含重复字母的最长子串的长度。
注意: 字符串长度 和 k 不会超过 104。
示例 1:
输入: s ABAB你可以将任意位置上的字符替换成另外的字符总共可最多替换 k 次。在执行上述操作后找到包含重复字母的最长子串的长度。
注意: 字符串长度 和 k 不会超过 104。
示例 1:
输入: s ABAB, k 2
输出: 4
解释: 用两个A替换为两个B,反之亦然。 示例 2:
输入: s AABABBA, k 1
输出: 4
解释: 将中间的一个A替换为B,字符串变为 AABBBBA。 子串 BBBB 有最长重复字母, 答案为 4。
思路双指针法
1.从左指针指向的位置开始遍历每次将左指针指定的字符设定为一个标准右指针向右遍历
2.1如果与标准相同继续向下遍历
2.2如果不同要是还有交换次数那就换掉这个字符继续向后遍历
2.3如果没有交换次数且不相同则退出本次遍历,左指针向后移一位
3.重复1操作
提交的代码
class Solution { public int characterReplacement(String s, int k) { int i0,j0,sum1,max0,tk; if(s.length()1) { if(s.charAt(0)!s.charAt(1)t0) { t--; sum; } for(j2;js.length();j) { if(s.charAt(j)!s.charAt(1)t0) { t--; sum; } else if(s.charAt(j)s.charAt(1)) { sum; } else { break; } max Math.max(max, sum); } } for(i0;is.length()-1;i) { sum1; tk; for(ji1;js.length();j) { if(s.charAt(j)!s.charAt(i)t0) { t--; sum; } else if(s.charAt(j)s.charAt(i)) { sum; } else { break; } max Math.max(max, sum); } } return max; } }
完整的代码 public class Solution424 { public static int characterReplacement(String s, int k) { int i0,j0,sum1,max0,tk; if(s.length()1) { if(s.charAt(0)!s.charAt(1)t0) { t--; sum; } for(j2;js.length();j) { if(s.charAt(j)!s.charAt(1)t0) { t--; sum; } else if(s.charAt(j)s.charAt(1)) { sum; } else { break; } max Math.max(max, sum); } } for(i0;is.length()-1;i) { sum1; tk; for(ji1;js.length();j) { if(s.charAt(j)!s.charAt(i)t0) { t--; sum; } else if(s.charAt(j)s.charAt(i)) { sum; } else { break; } max Math.max(max, sum); } } return max; } public static void main(String[] args) { //String s ABAB; //int k2; //String s AABABBA; //int k 1; //String s ABBB; //int k 2; System.out.println(characterReplacement(s,k)); } }