一串数字,1,4,5,6,8,9,10,13,14,15,16怎么判断它是不是连续的,如果连续返回true,否则,false

解决方案 »

  1.   

    public static void main(String[] args) {
      String str1 = "1,2,3,4,5,6,7,8,10";
      String str2 = "1,2,3,4,5,6,7,8,9,10";
      System.out.println(isSeriateNumber(str1, ","));
      System.out.println(isSeriateNumber(str2, ","));
    }// 假定序列是数字顺序是升序的
    // 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的
    private static boolean isSeriateNumber(String strNum, String separator) {
      String[] strNums = strNum.split(separator);
      int start = Integer.parseInt(strNums[0]);
      int end = Integer.parseInt(strNums[strNums.length-1]);
      if(start + strNums.length - 1 == end){
        return true;
      }else{
        return false;
      }
    }
      

  2.   

    楼上的代码不准确如果是这样 public class test
    {
        public static void main(String[] args) {
        String str1 = "1,2,3,4,9,5,6,7,8,10";   /////这里把9加到了4后面
        String str2 = "1,2,3,4,5,6,7,8,9,10";
        System.out.println(isSeriateNumber(str1, ","));
        System.out.println(isSeriateNumber(str2, ","));
    }// 假定序列是数字顺序是升序的
    // 只要获得第一值和最后一个值,通过其数值数计算一下,就可以得出是否是连的
    private static boolean isSeriateNumber(String strNum, String separator) {
        String[] strNums = strNum.split(separator);
        int start = Integer.parseInt(strNums[0]);
        int end = Integer.parseInt(strNums[strNums.length - 1]);
        if (start + strNums.length - 1 == end) {
            return true;
        } else {
            return false;
        }
    }}
      

  3.   

    那就改一下,增加一个排序。public static void main(String[] args) {
      String str1 = "1,2,3,4,5,6,7,8,10";
      String str2 = "2,3,4,5,6,7,8,9,10";
      String str3 = "2,3,4,9,5,6,7,8,10";
      System.out.println(isSeriateNumber(str1, ","));
      System.out.println(isSeriateNumber(str2, ","));
      System.out.println(isSeriateNumber(str3, ","));
    }private static boolean isSeriateNumber(String strNum, String separator) {
      String[] strNums = strNum.split(separator);
      int[] nums = new int[strNums.length];
      for(int i=0; i<strNums.length; i++) {
        nums[i] = Integer.parseInt(strNums[i]);
      }
      Arrays.sort(nums);    
      if(nums[0] + nums.length - 1 == nums[nums.length-1]){
        return true;
      }else{
        return false;
      }
    }
      

  4.   

    to  joejoe1991() 
    ====================
    我感觉他的算法好像有问题 ,但好像不是你说的那个问题人家前提条件是 升序的 你的 4和9 调换位置 那还是升序的吗?如果里面有重复的数字 那怎么办? 比如 有两个10 而没有9??
      

  5.   

    to: rrrxxxhhh谢谢您的建议,这个问题我到没有注意到,如果存在这种情况的话,那这个算法根本不行,我再想一想,再次谢谢您的指正。
      

  6.   

    呵呵,再次订正一下,由于先前没有考虑到重复的问题,看来只能逐一进行比较了。public static void main(String[] args) {
      String str1 = "1,2,3,4,5,6,7,8,10";
      String str2 = "2,3,4,5,6,7,8,9,10";
      String str3 = "2,3,4,5,6,7,9,8,10";
      String str4 = "2,4,4,5,6,7,9,8,10";
      String str5 = "2,3,4,5,6,7,8,10,10";
      System.out.println(isSeriateNumber(str1, ","));
      System.out.println(isSeriateNumber(str2, ","));
      System.out.println(isSeriateNumber(str3, ","));
      System.out.println(isSeriateNumber(str4, ","));
      System.out.println(isSeriateNumber(str5, ","));
    }private static boolean isSeriateNumber(String strNum, String separator) {
      String[] strNums = strNum.split(separator);
      int[] nums = new int[strNums.length];
      for (int i = 0; i < strNums.length; i++) {
        nums[i] = Integer.parseInt(strNums[i]);
      }
      Arrays.sort(nums);
      for (int i = 0; i < nums.length - 1; i++) {
        if (nums[i + 1] - nums[i] != 1) {
          return false;
        }
      }
      return true;
    }
      

  7.   

    package com.xiongliang.part1;public class First { /**
     * @param args
     */ public String[] string1;
    public int i;

        public void  getSomeStr(String[] string1){
         int i=string1.length;
    for(int n=1;n<i;n++){
    for(int m=0;m<n;m++){
                 int a=Integer.parseInt(string1[m]);
                 int b=Integer.parseInt(string1[n]);
    if(a>b){
      String str=string1[m];
      string1[m]=string1[n];
      string1[n]=str;
      }
    }
    }
        } 


    public boolean  getResult(String[] string1){
            Boolean f = null;
    for(int j=0;j<=i;j++){
    int c=Integer.parseInt(string1[j]);
    int d=Integer.parseInt(string1[j+1]);
    if((d-c)>1){
    f=false;
    }
    else 
    f=true;
    }
             return f;
    }
    public static void main(String[] args) {
    String[]str=new String[]{"1","3","5","6","8","7","9","2","4","10","10"};
            First f1=new First();
            f1.getSomeStr(str);
            if(f1.getResult(str)){
             System.out.println("是连续的");
            
            }
            else System.out.println("不是连续的");
    }}