zoukankan      html  css  js  c++  java
  • 在号码池取连续号码的算法

    最近项目中需要提供一个选号接口,在一批号码中检索出一批连续的号码供选则。

    实现算法如下:

    import java.util.*;

    public class SerialNum {

     /**
      * 在号码列表中检索出一批连续的号码
      * @param inNum 号码列表
      * @param serialCount 连续的号码个数
      * @return 符合条件的连续的号码
      */
     public List getSerialNum(List inNum,int serialCount)
     {
      int retListCount=inNum.size();//符合条件号码总数
      int serCount=serialCount;     //连续号码数
      List seriesNumList=new ArrayList();//连续的号码列表
      long preNum=0;  //前一个号码
      int serIndex=0; //号段前索引
      int serToIndex=0;//号码段后索引
      /*取一段连续的号码*/
      while(serIndex+serCount<=retListCount)
      {
       serToIndex=serIndex+serCount;
                /*取一段号码*/
       seriesNumList=getSubList(inNum,serIndex,serToIndex);
       for(int i=0;i<serCount;i++)
       {
        long curNum=Long.parseLong(seriesNumList.get(i).toString());//当前号码
        if(i!=0)
        {
         if(curNum-preNum!=1)
         {
          serIndex+=i;
          seriesNumList.clear();
          break;
         }
        }
        preNum=curNum;
        if(i==serCount-1)
        {
         return seriesNumList;
        }
       }

      }
      return seriesNumList;
     }
     /**
      * 从一个列表中取一段列表
      * @param inList 列表
      * @param fromIndex 起始索引
      * @param toIndex 终止索引
      * @return 在列表中起始索引至终止索引的一段列表
      */
     public List getSubList(List inList,int fromIndex,int toIndex)
     {
      List subList=new ArrayList();
      int size=inList.size();
      if(toIndex<=size&&(toIndex-fromIndex)<=size)
      {
          for(int i=fromIndex;i<toIndex;i++)
          {
           subList.add(inList.get(i));
          }
      }
      return subList;
     }
     /**
      * @param args
      */
     public static void main(String[] args) {
      // TODO Auto-generated method stub
      List inNumList=new ArrayList();
      inNumList.add("4560000");
      inNumList.add("4560002");
      inNumList.add("4560004");
      inNumList.add("4560005");
      inNumList.add("4560006");
      inNumList.add("4560007");
      inNumList.add("4560008");
      inNumList.add("4560009");
      inNumList.add("4560010");
      inNumList.add("4560012");
      inNumList.add("4560013");
      inNumList.add("4560014");
      inNumList.add("4560015");
      inNumList.add("4560016");
      inNumList.add("4560017");
      inNumList.add("4560018");
      inNumList.add("4560019");
      inNumList.add("4560020");
      inNumList.add("4560200");
      inNumList.add("4560300");
      inNumList.add("4560301");
      inNumList.add("4560302");
      inNumList.add("4560303");
      inNumList.add("4560304");
      inNumList.add("4560305");
      inNumList.add("4560306");
      inNumList.add("4560307");
      inNumList.add("4560308");
      inNumList.add("4560309");
      inNumList.add("4560310");
      inNumList.add("4560311");
      inNumList.add("4560312");
      inNumList.add("4560313");
      inNumList.add("4560314");
      inNumList.add("4560315");
      inNumList.add("4560316");
      inNumList.add("4560317");

      SerialNum serialNum=new SerialNum();
      List serialList=serialNum.getSerialNum(inNumList,7);
      System.out.print(serialList);

     }
    }

    运行结果:
    [4560004, 4560005, 4560006, 4560007, 4560008, 4560009, 4560010]

  • 相关阅读:
    static变量的生命周期
    关于C++的new是否会对内存初始化的问题
    行列式的本质是什么?
    C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝
    C++拷贝(复制)构造函数详解
    随机生成指定长度字符字符串(C语言实现)
    【npm】npm install的报错
    【HTTP】http请求url参数包含+号,被解析为空格
    【ngx-ueditor】百度编辑器按下Shift键不触发contentChange事件
    【Angular】No component factory found for ×××.
  • 原文地址:https://www.cnblogs.com/xiejava/p/15171492.html
Copyright © 2011-2022 走看看