zoukankan      html  css  js  c++  java
  • 字符串排序

    题目描述

    编写一个程序,将输入字符串中的字符按如下规则排序。

    规则1:英文字母从AZ排列,不区分大小写。

          如,输入:Type 输出:epTy

    规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。

        如,输入:BabA 输出:aABb

    规则3:非英文字母的其它字符保持原来的位置。

        如,输入:By?e 输出:Be?y

    样例:

        输入:

       A Famous Saying: Much Ado About Nothing(2012/8).

        输出:

       A aaAAbc dFgghhiimM nNn oooos Sttuuuy (2012/8).

    输入例子:
    A Famous Saying: Much Ado About Nothing (2012/8).
    
    输出例子:
    A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

    思路:把字符串中的字母取出来,利用冒泡稳定排序对字母排序,其中的字母排序时统一为小写或是,但是交换位置时还是原来字母,然后再把字母放到相对应的位置
     1 import java.util.ArrayList;
     2 import java.util.List;
     3 import java.util.Scanner;
     4 
     5 public class Main {
     6 
     7     public static void main(String[] args) {
     8         Scanner sc = new Scanner(System.in);
     9         while(sc.hasNextLine()){
    10             String s = sc.nextLine();
    11             sortStr(s);
    12         }
    13     }
    14     
    15     public static void sortStr(String s){
    16         List<Character> li = new ArrayList<Character>();
    17         for(int i=0;i<s.length();i++){//把字符串中的字母取出来
    18             if(String.valueOf(s.charAt(i)).matches("[a-zA-Z]")){
    19                 li.add(s.charAt(i));
    20             }
    21         }
    22         
    23         for(int i=0;i<li.size();i++){//使用冒泡排序对字母进行稳定排序
    24             for(int j=li.size()-2;j>=i;j--){
    25                 char tem1=' ';
    26                 char tem2=' ';
    27                 if(li.get(j)>=97){
    28                     tem1=(char)(li.get(j)-32);
    29                 }else{
    30                     tem1=li.get(j);
    31                 }
    32                 if(li.get(j+1)>=97){
    33                     tem2=(char)(li.get(j+1)-32);
    34                 }else{
    35                     tem2=li.get(j+1);
    36                 }
    37                 if(tem1>tem2){
    38                     char temp=li.get(j);
    39                     li.set(j,li.get(j+1));
    40                     li.set(j+1,temp);
    41                 }
    42             }
    43         }
    44         int j=0;
    45         StringBuffer sb = new StringBuffer(s);
    46         for(int i=0;i<s.length();i++){//把排好的字符放到相对应的位置
    47             if(String.valueOf(s.charAt(i)).matches("[a-zA-Z]")){
    48                 sb.replace(i,i+1, String.valueOf(li.get(j++)));
    49             }
    50         }
    51         System.out.println(sb);
    52     }
    53 
    54 }

    下面代码参考网友,思路一样,但是代码质量较高:

     1 import java.util.*;
     2 public class Main {
     3     public static void main(String args[]){
     4         Scanner cin =new Scanner(System.in);
     5         while(cin.hasNext()) {
     6             String s = cin.nextLine();
     7             List<Character> list = new ArrayList<>();
     8             char[] array = s.toCharArray();
     9             //先把字母收集起来
    10             for (char c : array) {
    11                 if (Character.isAlphabetic(c)) {
    12                     list.add(c);
    13                 }
    14             }
    15             //对字母进行排序,忽略大小写
    16             Collections.sort(list, new Comparator<Character>() {
    17                 @Override
    18                 public int compare(Character o1, Character o2) {
    19                    return Character.toUpperCase(o1)-Character.toUpperCase(o2);
    20                 }
    21             });
    22             //将排好序的字母替换到对应的位置
    23             for (int i = 0; i < array.length; i++) {
    24                 if (Character.isAlphabetic(array[i])) {
    25                     array[i] = list.remove(0);
    26                 }
    27             }
    28             for (char c : array) {
    29                 System.out.print(c);
    30             }
    31             System.out.println();
    32             list.clear();
    33         }
    34     }
    35 }
    
    
  • 相关阅读:
    springmvc log4j 配置
    intellij idea maven springmvc 环境搭建
    spring,property not found on type
    intellij idea maven 工程生成可执行的jar
    device eth0 does not seem to be present, delaying initialization
    macos ssh host配置及免密登陆
    centos7 搭建 docker 环境
    通过rest接口获取自增id (twitter snowflake算法)
    微信小程序开发体验
    gitbook 制作 beego 参考手册
  • 原文地址:https://www.cnblogs.com/crazybuddy/p/5361469.html
Copyright © 2011-2022 走看看