输入: 整型数组
输出: 字符串
注意:输入数组已排序,从小到大
例如:
    输入数组:1 2 3 3 3 4 5 6 7 8 9 10 10 12 13 15 16 18
    输出字符串:1-10,12-13,15-16,18
    输入数组:1 1 1 1 1 2 3 4 5 7 8 9 10 10 10 10
    输出字符串:1-5,7-10

解决方案 »

  1.   

    public static void main(String[] args) {
    StringBuffer buf = new StringBuffer();
    int[] arr = new int[]{1,2,3,3,3,4,5,6,7,8,9,10,10,12,13,15,16,18};
    //int[] arr = new int[]{1,2,3,4,5,7,8,9,10,10,10,10};
    int min = arr[0];
    int len = arr.length;
    for(int i = 1;i < len;i++){
    if(arr[i] - arr[i - 1] <= 1){
    continue;
    }else{
    buf.append(min + "-" + arr[i - 1] + ",");
    min = arr[i];
    }
    }
    if(min != arr[len - 1]){
    buf.append(min + "-" + arr[len - 1]);
    }else{
    if(arr[len - 1] - arr[len - 2] > 1){
    buf.append(arr[len - 1]);
    }else{
    buf.deleteCharAt(buf.lastIndexOf(","));
    }
    }
    System.out.println(buf.toString());
    }
      

  2.   

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;public class Test {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    // int[] array = new int[40];
    List<Integer> array = new ArrayList();
    System.out.println("type in a sorted array, end with '!'");
    while (scanner.hasNext()) {
    if (scanner.hasNextInt()) {
    array.add(scanner.nextInt());
    System.out.println("array: " + array.toString());
    } else if (scanner.next().equals("!")) {
    break;
    }
    } System.out.println("end"); int start = 0;
    int end = 0;
    for (int i = 0; i < array.size() - 1; i++) {
    if (array.get(i) > array.get(i + 1)) {
    System.out.println("array sorting error");
    break;
    }
    if (array.get(i) + 1 == array.get(i + 1) && start == 0) {
    start = array.get(i);
    }
    if ((array.get(i) == array.get(i + 1) || i == array.size() - 2) && start != 0) {
    System.out.print(start + "-" + array.get(i + 1) + ",");
    start = 0;
    } else if ((array.get(i) + 1 < array.get(i + 1)) && start != 0) {
    System.out.print(start + "-" + array.get(i) + ",");
    start = 0;
    }
    }
    System.exit(0);
    }
    }