Untitled
unknown
java
a year ago
1.4 kB
8
Indexable
public static String getSpecialString(String s) {
int n = s.length();
char[] sArr = s.toCharArray();
for (int i = n - 1; i >= 0; i--) {
char originalChar = sArr[i];
for (char c = (char) (sArr[i] + 1); c <= 'z'; c++) {
if ((i > 0 && c == sArr[i - 1]) || (i + 1 < n && c == sArr[i + 1])) {
continue;
}
sArr[i] = c;
if (fillRest(sArr, i + 1)) {
return new String(sArr);
}
}
sArr[i] = originalChar; // Reset to original character
}
return "-1";
}
private static boolean fillRest(char[] sArr, int start) {
int n = sArr.length;
for (int i = start; i < n; i++) {
// Try to assign the smallest possible character
boolean assigned = false;
for (char c = 'a'; c <= 'c'; c++) { // Limiting to 'a', 'b', 'c' for efficiency
if ((i > 0 && c == sArr[i - 1]) || (i + 1 < n && c == sArr[i + 1])) {
continue;
}
sArr[i] = c;
assigned = true;
break;
}
if (!assigned) {
return false; // Cannot assign a valid character
}
}
return true;
}Editor is loading...
Leave a Comment