A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

上干货楼~

-------------------------------------------------------------------------------------------------------------------------------
题文:
/*现在有一串字符串,内容是: String str="wo ai heima, heima shi wo jia, Qing Da jia Ai Hu Ta!";
要求:对这个字符串中的字符进行排序, 排序结果如下: aaaabbbbcccccdddd....AAABBBCCCDDD...*/


------------------------------------------------------------------------------------------------------------------------------------

代码区:

import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.TreeSet;


public class HomeWorke03 {
        public static void main(String[] args) {
                String str="wo ai heima, heima shi wo jia, Qing Da jia Ai Hu Ta!";
                String str2 = str.replaceAll(" ", "");
                String str3 = str2.replaceAll(",", "");
                String str4 = str3.replaceAll("!", "");
                System.out.println(str4);
                String s ="";
                String s1 ="";
                char [] sArr = str4.toCharArray();
                for(int i =0 ;i<sArr.length;i++) {
                        if (sArr<='z'&&sArr>='a') {
                                s += sArr;
                        } else if (sArr<='Z'&&sArr>='A') {
                                s1+=sArr;
                        }
                }
                char [] arr1 = s.toCharArray();
                char [] arr2 = s1.toCharArray();
                List<Character> list = new ArrayList<>();
                //定义一个可以排序的 集合 TreeSet
                TreeSet<Character> ts = new TreeSet<>(new Comparator<Character>() {
                        @Override
                        public int compare(Character o1, Character o2) {
                               
                                int num = o1-o2;
                               
                               
                                return num == 0 ? 1 :num;
                        }
                });
                for (Character character : arr1) {
                        ts.add(character);
                }
                list.addAll(ts);
                ts.clear();
                for (Character character : arr2) {
                        ts.add(character);
                }
                list.addAll(ts);
                System.out.println(list);
                /*TreeSet<Character> ts1 = new TreeSet<>(new Comparator<Character>() {
                        @Override
                        public int compare(Character o1, Character o2) {
                               
                                int num = o1-o2;
                               
                               
                                return num == 0 ? 1 :num;
                        }
                });
                for (Character character : arr2) {
                        ts1.add(character);
                }
//                System.out.println(ts1);
//                System.out.println(ts);
               
               
                list.addAll(ts);
                list.addAll(ts1);
                for (Character character : list) {
                        System.out.print(character);
                }
                //System.out.println(list);
                */
}
}


------------------------------------------------------------------------------------------------------------------------------------------------


       总结:
            这道题,我又想多了,
本来就用不到40行代码就能解决的问题,
我 写了70 行,
这道题,先进行正则的判断,然后截取,
我是通过treeset集合的 排序特点做的.
将大写字母和小写字母提出来,
然后分两次 使用TreeSet集合,然后清空
然后 分两次将获取到的有序序列给list集合,
还是感觉自己做的太笨了....哎!

1 个回复

倒序浏览
题目简单的时候想,这个题这么简单,不可能
题目难得时候想,这个题这么难,,不可能吧...
真的是, 笨人还是默默的用笨办法吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马