端口号区间合并
来源:互联网 发布:弯矩计算软件 编辑:程序博客网 时间:2024/06/10 21:26
配置网络时,经常需要配置端口号,但是从UI传进来的端口格式虽然是正确的,但经常出现端口有交叉、或者重复的,为了更加友好,需要写一个函数把这些重复或者交叉的端口号格式化成最简单的形式。
初始条件:
1、输入的端口支持多个,多个端口号之间用英文的逗号“,”分隔。例如:80,88
2、输入的端口支持范围,起始端口跟结束端口用“-”分隔。例如:80-88
3、输入的起始端口号小于结束端口号
4、端口port满足:1 <= port <= 65535
5、用户输入的端口号已经是合法的,无需再做判断,仅需要合并后输出即可
输入描述
输入只有一行,即未合并过的端口号
输出描述
合并端口后输出结果,如果单个端口号可以用区间的形式表示,则优先使用区间;输出结果要按照端口号从小到排列
示例1
输入
6553,1,-655,5-1010,1011,1012
输出
1-1012,6553
示例2
输入
5,4,3,2,100,103
输出
2-5,100-101,103
import java.math.BigDecimal;import java.util.*;class Data{ int start; int end;}public class Main { public static void main(String args[]) { Scanner sc = new Scanner(System.in); List<Data> res = new LinkedList<Data>(); List<Data> datas = new LinkedList<Data>(); String[] input=sc.nextLine().split(","); for(int i=0;i<input.length;i++){ Data data=new Data(); if(input[i].contains("-")){ String[] tt=input[i].split("-"); data.start=Integer.parseInt(tt[0]); data.end=Integer.parseInt(tt[1]); }else{ data.start=Integer.parseInt(input[i]); data.end=Integer.parseInt(input[i]); } datas.add(data); } Collections.sort(datas, new Comparator<Data>() { @Override public int compare(Data o1, Data o2) { return o1.start - o2.start; } }); Data prev = null; for (Data item : datas) { if (prev == null || prev.end < item.start-1) { res.add(item); prev = item; } else if (prev.end < item.end) { prev.end = item.end; } } int len=res.size(); for(int i=0;i<len;i++){ if(i==len-1){ if(res.get(i).start==res.get(i).end){ System.out.print(res.get(i).start); }else { System.out.print(res.get(i).start+"-"+res.get(i).end); } }else { if (res.get(i).start == res.get(i).end) { System.out.print(res.get(i).start + ","); } else { System.out.print(res.get(i).start + "-" + res.get(i).end + ","); } } } }}
阅读全文
0 0
- 端口号区间合并
- 区间合并
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 区间合并
- 区间合并
- 区间合并
- 区间合并
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 合并区间
- 基于DragonBoard410c的智能照明系统
- Ghost Explore镜像文件查看器
- Linux环境下自动备份oracle数据库并传输到指定的备份存储器上
- 跨浏览器开发笔记
- 软件工程课程实验报告:实验四
- 端口号区间合并
- NEON 3x3 max pool示例代码
- Google EventBus 使用详解
- 第十一章ActiveMQ代理器的新特性【笔记】
- mysql+mmm+proxy实现mysql读写分离
- netty的tcp粘包与拆包
- linux基础(一)
- eclipse maven error: Archive for required library in project cannot be read or is not a valid ZIP fi
- Ehcache相关