Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * @author: Andrei_Misan
- */
- public class StringTask {
- public static void main(String[] args) {
- String arrStr = "aaabbbbbaa";
- int k = 1;
- int res = calculate(arrStr, k);
- System.out.println("result = " + res);
- }
- public static int calculate(String pArrStr, int pK) {
- int diffPos=0;
- int res = 0;
- char[] arr = pArrStr.toCharArray();
- //initial values for first run
- int[] data = new int[]{-1,0};
- while (data[1] > diffPos || data[0] == -1 ){
- diffPos = data[1];
- data = attemptIterate(pK, data[1], arr);
- if(data[0] > res){
- res = data[0];
- }
- }
- return res;
- }
- private static int[] attemptIterate(int pK, int pDiffPos, char[] pArr) {
- int cursor = pDiffPos;
- int counter = 0 ;
- int curCode = -1;
- int tempK = pK;
- while(cursor < pArr.length){
- if(curCode == -1){
- curCode = pArr[pDiffPos];
- counter++;
- } else if(curCode == pArr[cursor]){
- counter++;
- }else{
- if(tempK == 0){
- break;
- }
- if(tempK == pK){
- pDiffPos = cursor;
- }
- tempK--;
- counter++;
- }
- cursor++;
- }
- return new int[]{counter, pDiffPos};
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement