主机名排序

题目描述

主机名由多级域名组成,自右向左,依次是顶级域名、二级域名、三级域名,例如huawei.com.cncn是顶级域名,com是二级域名,huawei

三级域名。

请编写一段程序,实现主机名排序功能,排序规则以及限制条件如下:
1、主机名按照域名等级排序,即先顶级域名排序,再二级域名排序,最后是三级域名排序;
2、每一级域名排序时,参考字典顺序定义,abc 排在 abfabc 排在 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;
	}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值