主要分2部分:
1、元素间校验:当前元素与前一个元素比对是否连续2、采用二维数组存储
代码:
package com;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class test01 {
public static void main(String[] args) {
String testString = "10,2,3,4,7,10,11";
//数组数据是否连续校验
System.out.println(arrIsContinuou(testString));
}
//校验数组是否连续
public static String arrIsContinuou(String arrString) {
//排序后的数组
int[] inArrs = arraySort(stringsToInts(arrString.split(",")));
System.out.println(Arrays.toString(inArrs));
//二维数组,运算是否连续
List<List<Integer>> result = new ArrayList<List<Integer>>();
List<Integer> intList = new ArrayList<Integer>();
//当前元素
int cur = 0;
//前一个元素
int prev = 0;
for (int i = 0; i < inArrs.length; i++) {
cur = inArrs[i];
if (cur - prev == 1 || i==0) {
//元素连续
intList.add(cur);
} else {
//去除重复元素
if (cur != prev) {
//元素不连续
result.add(intList);
//发现当前元素不连续,重新创建一个集合存储
intList = new ArrayList<Integer>();
intList.add(cur);
}
}
//把当前元素赋值给前一个元素
prev = cur;
//最后一个元素时,添加到二维集合中
if (i == inArrs.length - 1) {
result.add(intList);
}
}
return result.toString();
}
/**
*
* @title stringToInts
* @describe 将字符串数组转换成int数组
* @param str .
* @return int[]
*/
public static int[] stringsToInts(String[] str) {
int length = str.length;
int[] result = new int[length];
// 依次取得字符串中的每一个字符,并将其转化为数字,放进int数组中
for (int i = 0; i < length; i++) {
result[i] = Integer.parseInt(str[i]);
}
return result;
}
/**
*
* @title arraySort
* @describe 对int数组排序
* @param arr .
* @return int[]
*/
public static int[] arraySort(int[] arr) {
int temp = -1;
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}
}