Douma37

alternating chars wip

Aug 14th, 2019
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.96 KB | None | 0 0
  1. // Complete the alternate function below.
  2.     static int alternate(String s) {
  3.         String str = removeDuplicates(s);
  4.         if (str.length() < 2) {
  5.             return 0;
  6.         } else {
  7.             boolean[] seen = new boolean[26];
  8.             int bestBet = 0;
  9.             for (int i = 0; i < str.length() - 1; i++) {
  10.                 char c1 = str.charAt(i);
  11.                 if (seen[(int) c1 - (int) 'a']) {
  12.                     str = removeChar(str, c1);
  13.                     str = removeDuplicates(str);
  14.                     continue;
  15.                 }
  16.                 for (int j = i + 1; j < str.length(); j++) {
  17.                   char c2 = str.charAt(j);
  18.                   if (seen[(int) c2 - (int) 'a'] || c1 == c2) {
  19.                         str = removeChar(str, c1);
  20.                         str = removeDuplicates(str);
  21.                       continue;
  22.                   }
  23.                   seen[(int) c1 - (int) 'a'] = true;
  24.                   System.out.println(c1 + " " + c2);
  25.                   int candidateLength = 1;
  26.                   char currentChar = c1;
  27.                   for (int k = j; k < str.length(); k++) {
  28.                       if (str.charAt(k) == currentChar) {
  29.                           candidateLength = -1;
  30.  
  31.                           break;
  32.                       }
  33.                       if (currentChar == c1 && str.charAt(k) == c2
  34.                           || currentChar == c2 && str.charAt(k) == c1) {
  35.                               candidateLength++;
  36.                          
  37.                           currentChar = currentChar == c1 ? c2 : c1;
  38.                           //System.out.println("currentChar " + currentChar);
  39.                       }
  40.                   }
  41.                 System.out.println(candidateLength);
  42.                   if (candidateLength >= bestBet) {
  43.                       bestBet = candidateLength;
  44.                   }
  45.                 }
  46.             }
  47.             System.out.println(bestBet);
  48.             return bestBet;
  49.         }
  50.  
  51.     }
  52.     static String removeChar(String str, char cToRemove) {
  53.         StringBuilder sb = new StringBuilder();
  54.         for (int i = 0; i < str.length(); i++) {
  55.             char c = str.charAt(i);
  56.             if (c != cToRemove) {
  57.                 sb.append(c);
  58.             }
  59.         }
  60.         return sb.toString();
  61.     }
  62.     static String removeDuplicates(String s) {
  63.         boolean dup = true;
  64.         String str = s;
  65.         while (dup) {
  66.             char cToRemove = '\0';
  67.             dup = false;
  68.             for (int i = 1; i < str.length(); i++) {
  69.                 if (str.charAt(i) == str.charAt(i-1)) {
  70.                     dup = true;
  71.                     cToRemove = str.charAt(i);
  72.                     break;
  73.                 }
  74.             }
  75.             if (dup) {
  76.                 str = removeChar(str, cToRemove);
  77.                 System.out.println("remove duplicates result: " + str);
  78.                
  79.             }
  80.         }
  81.         return str;
  82.     }
Advertisement
Add Comment
Please, Sign In to add comment