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]

  • 相关阅读:
    hdu 2444(二分图) The Accomodation of Students
    hdu 5532 (LIS) Almost Sorted Array
    hdu 1059 (多重背包) Dividing
    poj 2184(Cow Exhibition)
    hdu 2571 (命运) 那个配图女神
    poj 3624 && hdu 2955(背包入门)
    hdu 1257 && hdu 1789(简单DP或贪心)
    BBS(第一天)项目之 注册功能实现通过forms验证与 前端ajax请求触发查询数据库判断用户是否存在的功能实现
    Django之form模板的使用
    Django之Auth模块 实现登录,退出,自带session 与认证功能的一个重要的模块
  • 原文地址:https://www.cnblogs.com/xiejava/p/15171492.html
Copyright © 2011-2022 走看看