gpt4 book ai didi

java - 打印范围,如果缺少数字

转载 作者:行者123 更新时间:2023-12-05 06:59:53 24 4
gpt4 key购买 nike

我有一个排序的数字列表,想要打印连续的数字范围,如果系列中缺少任何数字,我们将开始一个新的范围。注意:系列中可能连续缺少多个数字。示例:

Input:
list = {301, 302, 303, 304, 305, 307, 308, 310, 312, 318, 319, 322, 390}
Output: range
301 - 305 //306 is missing so it breaks and new range starts
307 - 308 //309 is missing so breaks
310 // 311 is missing so breaks
312 // 313, 314, 315, 316, 317 are missing break (1 or more number can be missed)
318 - 319
322
390

我的逻辑:

int count = list.get(0);
String output = list.get(0) + "-";
for(int n: list){
if(count++ != n){
output = output+(count-2);
System.out.println(output);
output = n+"-";
count++;
}
}

它失败了,如果中间缺少 2 个数字。

最佳答案

我会使用两个 int 来跟踪每个范围的开始和结束。遍历列表,只要下一个数字是末尾的下一个数字,它就成为新的末尾。如果不是,您手头有一个新范围:

public static void main(String[] args) {
int[] list = {301, 302, 303, 304, 305, 307, 308, 310, 312, 318, 319, 322, 390};

int start = list[0];
int end = list[1];
for (int i = 2; i < list.length; ++i) {
if (end + 1 == list[i]) {
end++;
} else {
printRange(start, end);
start = list[i];
end = list[i];
}
}
printRange(start, end);
}

private static void printRange(int start, int end) {
if (start != end) {
System.out.println(start + " - " + end);
}
else {
System.out.println(start);
}
}

关于java - 打印范围,如果缺少数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64285277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com