输入: 整型数组
输出: 字符串
注意:输入数组已排序,从小到大
例如:
输入数组: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 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
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());
}
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);
}
}