Java Largest String
public class Solution {
public static String largestString(String s) {
char[] chars = s.toCharArray();
int len = chars.length;
StringBuilder cur = new StringBuilder();
for (int i = len - 1; i >= 0; i--) {
cur.insert(0, chars[i]);
if (cur.length() == 3) {
if (cur.toString().equals("abb")) {
chars[i] = 'b';
chars[i + 1] = 'a';
chars[i + 2] = 'a';
if (i + 4 < len && chars[i + 4] == 'b') {
i += 4 + 1;
} else if (i + 3 < len && chars[i + 3] == 'b') {
i += 3 + 1;
} else if (chars[i + 2] == 'b') {
i += 2 + 1;
}
}
if (chars[i + 1] == 'b') {
i += 1 + 1;
} else {
++i;
}
cur.setLength(0);
}
}
return new String(chars);
}
}
This builds the biggest valid string it can under the challenge rules by always choosing the best next character it is allowed to use.