新建了一个类来保存大小写
public class Main{
public static void main(String[] args){ Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String str = sc.nextLine();
char[] arr = str.toCharArray();
List<Letter> list = new ArrayList<>();
for(int i=0;i<arr.length;i++){
if(!isLe(arr[i]))continue;
if(arr[i]>='A'&& arr[i]<='Z'){
list.add(new Letter((char)(arr[i]+'a'-'A'),true));
}
else{
list.add(new Letter(arr[i],false));
}
}
for(int i=0;i<list.size();i++){
for(int j=list.size()-1;j>i;j--){
if(Letter.isBE(list.get(j-1),list.get(j))){
Letter tmp = list.get(j);
list.set(j, list.get(j-1));
list.set(j-1,tmp);
}
}
}
int k=0;
for(int i=0;i<arr.length;i++){
if(isLe(arr[i])){
if(list.get(k).isBig){
arr[i] =(char)(list.get(k++).ch-'a'+'A');
}
else{
arr[i] = list.get(k++).ch;
}
}
System.out.print(arr[i]);
}
System.out.println();
}
}
public static boolean isLe(char ch){
if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')){
return true;
}
return false;
}
}
class Letter{
char ch;
boolean isBig;
public Letter(char ch,boolean isBig){
this.ch = ch;
this.isBig = isBig;
}
public static boolean isBE(Letter le1,Letter le2){
if(le1.ch>le2.ch){
return true;
}
return false;
}
}