导航

public static void main(String[] args) {
          String input ="A8r4c5jaAjp#7";
          //转为char[]
          char[] inputArr =input.toCharArray();
          //存储 大写字母、小写字母
          List<String> upperCaseList = new ArrayList<>(), lowerCaseList =new ArrayList<>();
          for(int i=0;i<inputArr.length;i++) {
               if(inputArr[i] >=65 && inputArr[i] <=90) { //大写字母
                   upperCaseList.add(String.valueOf(inputArr[i]));
               }else if(inputArr[i] >=97 && inputArr[i] <=122) { //小写字母
                      lowerCaseList.add(String.valueOf(inputArr[i]));
               }
          }
          //将大写字母、小写字母 list转为String[]
          String[] upperCaseArr =upperCaseList.toArray(new String[0]);
          String[] lowerCaseArr =lowerCaseList.toArray(new String[0]);
          //对大写字母进行排序
          Arrays.sort(upperCaseArr);
          //对小写字母进行排序
          Arrays.sort(lowerCaseArr);
          
          //取出大写字母,拼成字符串
          StringBuilder result =new StringBuilder();
          for(int i=0;i<upperCaseArr.length;i++) {
               result.append(upperCaseArr[i]);
          }
          
          //定义接收剩余字母
          StringBuilder remainingStr =new StringBuilder();
          for(int i=0;i<lowerCaseArr.length;i++) {
              //将小写字母转为大写字母
              String upperCaseStr =lowerCaseArr[i].toUpperCase();
              //取出大写字母所在索引
              int index =result.lastIndexOf(upperCaseStr);
              if(index !=-1) { //存在大写字母
                  //去开头,拼接
                  String startStr =result.substring(0, index +1) +lowerCaseArr[i];
                  //取结尾
                  String endStr =result.substring(index + 1);
                  //重新赋值
                  result =new StringBuilder(startStr + endStr);
              }else { //不存在大写字母
                    remainingStr.append(lowerCaseArr[i]);
              }
          }
          //将不存在的小写字母拼接
          result.append(remainingStr);
          System.out.println(result);
    }
View Code

结果 :AAacjjpr