当前位置: 首页 > news >正文

寻找在山西运城专业做网站推广的清远市发布

寻找在山西运城专业做网站推广的,清远市发布,个人网站的设计和建设,做h5那个网站模板好题目描述: VLAN是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。 定义一个VLAN ID的资源池(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表示,不连续的用单…

题目描述:

      VLAN是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。 定义一个VLAN ID的资源池(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表示,不连续的用单个整数表示,所有的VLAN用英文逗号连接起来。现 在有一个VLAN资源池,业务需要从资源池中申请一个VLAN,需要你输出从VLAN资源池中移除申请的VLAN后的资源池。

输入描述:

第一行为字符串格式的VLAN资源池,

第二行为业务要申请的VLAN,VLAN的取值范围为[1,4094]之间的整数。

输出描述:

       从输入VLAN资源池中移除申请的VLAN后字符串格式的VLAN资源池,输出要求满足题目描述中的格式,并且按照VLAN从小到大升序输出。 如果申请的VLAN不在原VLAN资源池内,输出原VLAN资源池升序排序后的字符串即可。

备注:

输入VLAN资源池中VLAN的数量取值范围为[2-4094]间的整数,资源池中VLAN不重复且合法([1,4094]之间的整数),输入是乱序的。

示例

输入: 1-5         

             2

输出: 1,3-5

说明: 原VLAN资源池中有VLAN 1、2、3、4、5,从资源池中移除2后,剩下VLAN 1、3、4、5,按照题目描述格式并升序后的结果为1,3-5。

输入: 20-21,15,18,30,5-10       

                15

输出: 5-10,18,20-21,30

说明: 原VLAN资源池中有VLAN 5、6、7、8、9、10、15、18、20、21、30,从资源池中移除15后,资源池中剩下的VLAN为 5、6、7、8、9、10、18、20、21、30,按照题目描述格式并升序后的结果为5-10,18,20-21,30。

输入: 5,1-3 10

输出: 1-3,5

说明: 原VLAN资源池中有VLAN 1、2、3,5,申请的VLAN 10不在原资源池中,将原资源池按照题目描述格式并按升序排序后输出的结果为1-3,5。

java 程序

package com.tarena.test.B10;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;
import java.util.StringJoiner;
import java.util.stream.Collectors;

/**
 * 
 
题目描述:

      VLAN是一种对局域网设备进行逻辑划分的技术,为了标识不同的VLAN,引入VLAN ID(1-4094之间的整数)的概念。 定义一个VLAN ID的资源池(下称VLAN资源池),资源池中连续的VLAN用开始VLAN-结束VLAN表示,不连续的用单个整数表示,所有的VLAN用英文逗号连接起来。现 在有一个VLAN资源池,业务需要从资源池中申请一个VLAN,需要你输出从VLAN资源池中移除申请的VLAN后的资源池。

输入描述:

第一行为字符串格式的VLAN资源池,

第二行为业务要申请的VLAN,VLAN的取值范围为[1,4094]之间的整数。

输出描述:

       从输入VLAN资源池中移除申请的VLAN后字符串格式的VLAN资源池,输出要求满足题目描述中的格式,并且按照VLAN从小到大升序输出。 如果申请的VLAN不在原VLAN资源池内,输出原VLAN资源池升序排序后的字符串即可。

备注:

输入VLAN资源池中VLAN的数量取值范围为[2-4094]间的整数,资源池中VLAN不重复且合法([1,4094]之间的整数),输入是乱序的。

示例

输入: 1-5         

             2

输出: 1,3-5

说明: 原VLAN资源池中有VLAN 1、2、3、4、5,从资源池中移除2后,剩下VLAN 1、3、4、5,按照题目描述格式并升序后的结果为1,3-5。

输入: 20-21,15,18,30,5-10       

                15

输出: 5-10,18,20-21,30

说明: 原VLAN资源池中有VLAN 5、6、7、8、9、10、15、18、20、21、30,从资源池中移除15后,资源池中剩下的VLAN为 5、6、7、8、9、10、18、20、21、30,按照题目描述格式并升序后的结果为5-10,18,20-21,30。

输入: 5,1-3 
      10

输出: 1-3,5

说明: 原VLAN资源池中有VLAN 1、2、3,5,申请的VLAN 10不在原资源池中,将原资源池按照题目描述格式并按升序排序后输出的结果为1-3,5。
 * @author Administrator
 *
 */
public class B13 {
    
    
    public static void main(String[] args) {
        try(Scanner sc = new Scanner(System.in);){
            String vlans = sc.nextLine();
            Integer need = Integer.parseInt( sc.nextLine());
            System.out.println(resultStr(vlans,need));
        }
    }
    
    public static String resultStr(String vlans,Integer need) {
        String[] vlanStr = vlans.split(",");
        LinkedList<Integer[]> list = Arrays.stream(vlanStr).map(
                temp->Arrays.stream(temp.split("-")).map(Integer::parseInt).toArray(Integer[]::new))//
        .sorted((a,b)-> (a[0] - b[0]) )
        .collect(Collectors.toCollection(LinkedList::new));
        for(int i=0;i<list.size();i++) {
            Integer[] tempArr = list.get(i);
            if(tempArr.length==1) {
                if(tempArr[0]==need) {
                    list.remove(i);
                    break;
                }
            }else {
                //比结尾大。结束本次循环
                if(need>tempArr[1]) {
                    continue;
                }
                //比开始小,结束本次循环,而且需要的数不存在
                if(need<tempArr[0]) {
                    break;
                }
                //结尾的值
                if(need==tempArr[1]) {
                    list.set(i, newArray(tempArr[0],tempArr[1]-1));//List 的set 方法与add方法这里可以变换使用。如果用add,前面要先调用删除 remove(i);
                //开始的值    
                }else if(need==tempArr[0]){
                    list.set(i, newArray(tempArr[0]+1,tempArr[1]));
                }else {
                    //list.remove(i);
                    //先添加后面的数组
                    list.set(i, newArray(need+1,tempArr[1]));
                    //再添加前面的数组,刚添加的数组自动向后一位
                    list.add(i, newArray(tempArr[0],need-1));
                }
                break;
            }
        }
        //拼接字符串处理类
        StringJoiner returnStr = new StringJoiner(",");
        list.stream().map(arr ->
            { if(arr.length>1) {//这一块有人也是用的 StringJoiner 来实现 大家觉得哪种方式好呢;
                            return arr[0]+"-"+arr[1];
                            }else {
                                return arr[0]+"";
                            }
                    }
        ).forEach(returnStr::add);//temp1 -> returnStr.add(temp1)
        return returnStr.toString();
    }

    public static Integer[] newArray(Integer begin,Integer end) {
        if(begin < end) {
            return new Integer[] {begin,end};
        }else {
            return new Integer[] {begin};
        }
    }
}
了解知识点

1、StringJoiner 类,之前自己写过类似的功能类,但是不知道java自带的这个类;

2、Arrays 感觉很久没有用这个工具类,专门处理数组的类

3、Stream 流的使用 里面的.map(), .sort(),.collect()等发放使用还有.forEach等方法

http://www.hkea.cn/news/996232/

相关文章:

  • wordpress网站备案上海搜索推广
  • 网站建设套餐有哪些安卓在线视频嗅探app
  • 做电影网站要买什么重庆seo网站哪家好
  • 广州北京网站建设公司网站外部优化的4大重点
  • 网站建设书优化大师是干什么的
  • 优秀的网站建设公司百度指数人群画像
  • wordpress企业中文模板太原seo哪家好
  • 广东网广东网站建设网站推广方案模板
  • 网站运营知识快手seo
  • 咖啡公司网站建设策划书微信营销方式
  • 柳江区城乡住房建设局网站上海seo优化服务公司
  • 西城企业网站建设企业网站怎么优化
  • 初学者做动态网站项目例子游戏特效培训机构排名
  • 汽车类网站搭建直链平台
  • 做网站遇到的困难总结网络营销软件代理
  • 做网站登录论坛外链代发
  • 东营专业网站建设公司排行青岛谷歌优化公司
  • 公众号和网站先做哪个口碑营销的形式
  • 长沙企业建网站费用关键词搜索推广排行榜
  • 怎么做网站端口代理沧州网络推广外包公司
  • php wordpress 目录seo课程培训机构
  • 常州网站建设方案优化引流app推广软件
  • 网络营销网站建设实训网络营销步骤
  • 网站都有后台吗百度竞价开户公司
  • 秭归网站建设网站seo优化心得
  • wordpress电影网站模板seo运营
  • 公司注册网上核名业务如何终止网站排名优化怎么做
  • 网站建设伍金手指下拉2网上推广平台
  • 沧州网站建设公司翼马爱情链接
  • 计算机学了出来干嘛免费优化推广网站的软件