题目描述
主机名由多级域名组成,自右向左,依次是顶级域名、二级域名、三级域名,例如huawei.com.cn,cn是顶级域名,com是二级域名,huawei是
三级域名。
请编写一段程序,实现主机名排序功能,排序规则以及限制条件如下:
1、主机名按照域名等级排序,即先顶级域名排序,再二级域名排序,最后是三级域名排序;
2、每一级域名排序时,参考字典顺序定义,abc 排在 abf,abc 排在 abcd 前。
3、输入的主机名确保符合以下规则
A、主机名以字符串形式给出,连续的两个主机名,以’$’符号分开;
B、主机名中仅包含小写英文字母和分隔符’.’;
C、主机名中没有连续的’.’,不以’.’开始,也不以’.’结束;
D、主机名不存在重复。
输入
输入为字符串,包含多个主机名,主机名之间以’$’符号分开。
输出
输出为经过排序后的字符串,主机名之间以’$’符号分开。
样例输入
huawei.com.cn$mail.huawei.com$imail.huawei.com$cctv.com.cn$bctv.com.cn
样例输出
cctv.com.cn$huawei.com.cn$imail.huawei.com$mail.huawei.com
cctv.com.cn$huawei.com.cn$imail.huawei.com$mail.huawei.com
提示
NO
地区
成都研究所
产品线
公共
阶段
招聘
难度
2级
public String sortZhuJiMing(String input){ String[] zjmArr=input.split("\\$"); LinkedHashMap<String,String> lhm=new LinkedHashMap<String,String>(); for(int i=0;i<zjmArr.length;i++){ String[] value=zjmArr[i].split("\\."); lhm.put(zjmArr[i],value[2]); } LinkedList<Map.Entry<String, String>> list = sort(lhm);//顶级域名排序 LinkedHashMap<String,String> lhm1=new LinkedHashMap<String,String>(); for(Map.Entry<String,String> l:list){ String[] value= l.getKey().split("\\."); lhm1.put(l.getKey(), value[1]); } LinkedList<Map.Entry<String,String>> listt=sort(lhm1);//一级域名排序 LinkedHashMap<String,String> lhm2=new LinkedHashMap<String,String>(); for(Map.Entry<String,String> l:listt){ String[] value= l.getKey().split("\\."); lhm2.put(l.getKey(), value[0]); } LinkedList<Map.Entry<String,String>> listtt=sort(lhm2);//二级域名排序 StringBuilder sb=new StringBuilder(); for(Map.Entry<String,String> l:listtt){ sb.append(l.getKey()+"$"); } sb.deleteCharAt(sb.length()-1); return sb.toString(); } public LinkedList<Map.Entry<String, String>> sort(LinkedHashMap<String, String> lhm) { LinkedList<Map.Entry<String,String>> list=new LinkedList<Map.Entry<String,String>>(lhm.entrySet()); Collections.sort(list,new Comparator<Map.Entry<String,String>>(){ @Override public int compare(Entry<String, String> o1,Entry<String, String> o2) { return o1.getValue().compareTo(o2.getValue()) ;}}); return list; }