用java语言实现下面描述:描述 请进行如下输入输出的转换: 例如: "1" -> "1" "1-3" -> "1,2,3" "1-2,4" -> "1,2,4" "1-4,7-10" -> "1,2,3,4,7,8,9,10" "1-4,6,7-10" -> "1,2,3,4,6,7,8,9,10" 输入描述 给定一个整形数组的字符串,带"-"和","进行分隔,例如"1-2,4,6-7" 。 输出描述 输出为输入字符串范围的整数,使用","分隔。
时间: 2023-07-19 07:09:27 浏览: 77
以下是用 Java 实现的代码:
```java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
String input = "1-2,4,6-7";
List<Integer> nums = new ArrayList<>();
String[] ranges = input.split(",");
for (String range : ranges) {
String[] parts = range.split("-");
if (parts.length == 1) {
nums.add(Integer.parseInt(parts[0]));
} else {
int start = Integer.parseInt(parts[0]);
int end = Integer.parseInt(parts[1]);
for (int i = start; i <= end; i++) {
nums.add(i);
}
}
}
List<Integer> result = nums.stream().distinct().sorted().collect(Collectors.toList());
System.out.println(result.stream().map(Object::toString).collect(Collectors.joining(",")));
}
}
```
代码解析:
首先,我们定义一个空的 ArrayList 来存储解析得到的整数序列。
然后,我们将输入字符串按照逗号分隔成若干个字符串,并对于每个字符串进行解析。我们首先尝试以 "-" 为分隔符将字符串分成两部分,如果分成两部分,说明这是一个形如 "1-3" 的范围,我们就将范围中的所有整数加入 ArrayList 中;否则,说明这是一个单独的整数,我们就将它直接加入 ArrayList 中。
解析完所有字符串之后,我们对 ArrayList 进行去重和排序,然后将其中的所有整数转换成字符串,并用逗号分隔起来输出。
例如,对于输入 "1-2,4,6-7",我们会解析出 {1, 2, 4, 6, 7},然后去重并排序得到 {1, 2, 4, 6, 7},最后输出 "1,2,4,6,7"。
阅读全文