Untitled
unknown
java
5 months ago
1.4 kB
4
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