例如:Integer[] NoNum ={1,2,3,5,7,8,9,10,13}
输出的结果为 1-3,5,7-10,13
例如:Integer[] NoNum ={1,2,3,5,7,8,9,10,13}
输出的结果为 1-3,5,7-10,13
这个简单,写一个状态机搞定:
state 表示状态,0表示开始状态或者前面的是独立的
1表示在连续之中
2表示最后一个
状态迁移图
class Untitled {
public static void main(String[] args) {
int[] NoNum ={1,2,3,5,7,8,9,10,13};
int state = 0;
String result = "";
for (int i = 0; i < NoNum.length; i++)
{
if (i == NoNum.length - 1) state = 2;
if (state == 0)
{
if (NoNum[i + 1] == NoNum[i] + 1)
{
result += Integer.toString(NoNum[i]);
result += "-";
state = 1;
}
else
{
result += Integer.toString(NoNum[i]);
result += ",";
}
}
else if (state == 1)
{
if (NoNum[i + 1] != NoNum[i] + 1)
{
result += Integer.toString(NoNum[i]);
result += ",";
state = 0;
}
}
else
{
result += Integer.toString(NoNum[i]);
}
}
System.out.println(result);
}
}
上机验证结果:
1-3,5,7-10,13