用Java写一个 当输入1,2,3,6,7,8 自动变成1-3,6-8的算法
时间: 2023-05-14 12:04:54 浏览: 58
以下是Java代码实现:
```
import java.util.ArrayList;
import java.util.List;
public class NumberRangeConverter {
public static void main(String[] args) {
int[] input = {1, 2, 3, 6, 7, 8};
List<String> output = convertToRange(input);
System.out.println(output);
}
public static List<String> convertToRange(int[] input) {
List<String> output = new ArrayList<>();
int start = input[0];
int end = input[0];
for (int i = 1; i < input.length; i++) {
if (input[i] == end + 1) {
end = input[i];
} else {
if (start == end) {
output.add(String.valueOf(start));
} else {
output.add(start + "-" + end);
}
start = input[i];
end = input[i];
}
}
if (start == end) {
output.add(String.valueOf(start));
} else {
output.add(start + "-" + end);
}
return output;
}
}
```
输入为一个整数数组,输出为一个字符串列表,其中每个字符串表示一个数字范围。算法的思路是遍历整个数组,如果当前数字与前一个数字相差为1,则将当前数字作为范围的结束数字,否则将前一个范围加入输出列表,并将当前数字作为新的范围的开始和结束数字。最后需要将最后一个范围加入输出列表。