// credits to stackoverflow.com/users/1442960/marcus static S lexicographicallyNextString(S input) { final int lastCharPosition = input.length()-1; String inputWithoutLastChar = input.substring(0, lastCharPosition); char lastChar = input.charAt(lastCharPosition); char incrementedLastChar = (char) (lastChar + 1); // Handle int/char overflow. This wasn't done above. if (incrementedLastChar == ((char) 0)) return input+incrementedLastChar; return inputWithoutLastChar+incrementedLastChar; }