import java.util.Arrays;
public class SortString {
public static void main(String[] args) {
String input = "a1b2c3d4";
// Convert the string to a character array
Character[] chars = input.chars()
.mapToObj(c -> (char) c)
.toArray(Character[]::new);
// Sort the array with a custom comparator
Arrays.sort(chars, (a, b) -> {
if (Character.isLetter(a) && Character.isDigit(b)) {
return -1; // Letters come before digits
} else if (Character.isDigit(a) && Character.isLetter(b)) {
return 1; // Digits come after letters
} else {
return Character.compare(a, b); // Natural order for same type
}
});
// Convert the sorted array back to a string
StringBuilder sb = new StringBuilder();
for (Character ch : chars) {
sb.append(ch);
}
String sortedString = sb.toString();
System.out.println("Sorted String: " + sortedString);
}
}
/*
run:
Sorted String: abcd1234
*/