Advertisement
Guest User

Untitled

a guest
May 27th, 2016
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. /**
  2. *
  3. * @author: Andrei_Misan
  4. */
  5. public class StringTask {
  6.  
  7. public static void main(String[] args) {
  8. String arrStr = "aaabbbbbaa";
  9. int k = 1;
  10. int res = calculate(arrStr, k);
  11. System.out.println("result = " + res);
  12. }
  13.  
  14. public static int calculate(String pArrStr, int pK) {
  15. int diffPos=0;
  16. int res = 0;
  17. char[] arr = pArrStr.toCharArray();
  18.  
  19. //initial values for first run
  20. int[] data = new int[]{-1,0};
  21.  
  22. while (data[1] > diffPos || data[0] == -1 ){
  23. diffPos = data[1];
  24. data = attemptIterate(pK, data[1], arr);
  25. if(data[0] > res){
  26. res = data[0];
  27. }
  28. }
  29. return res;
  30. }
  31.  
  32. private static int[] attemptIterate(int pK, int pDiffPos, char[] pArr) {
  33. int cursor = pDiffPos;
  34. int counter = 0 ;
  35. int curCode = -1;
  36. int tempK = pK;
  37. while(cursor < pArr.length){
  38. if(curCode == -1){
  39. curCode = pArr[pDiffPos];
  40. counter++;
  41. } else if(curCode == pArr[cursor]){
  42. counter++;
  43. }else{
  44. if(tempK == 0){
  45. break;
  46. }
  47. if(tempK == pK){
  48. pDiffPos = cursor;
  49. }
  50. tempK--;
  51. counter++;
  52. }
  53. cursor++;
  54. }
  55. return new int[]{counter, pDiffPos};
  56. }
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement