顺次数Java
文章发布较早,内容可能过时,阅读注意甄别。
# 题目
我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。
请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。
示例 1:
输出:low = 100, high = 300
输出:[123,234]
示例 2:
输出:low = 1000, high = 13000
输出:[1234,2345,3456,4567,5678,6789,12345]
提示:
- 10 <= low <= high <= 10^9
# 思路
Java 字符串截取 (可以提前break)
# 解法
class Solution {
public List<Integer> sequentialDigits(int low, int high) {
String str = "123456789";
List<Integer> list = new ArrayList<>();
int lowDigit = String.valueOf(low).length(), highDigit = String.valueOf(high).length();
for (int digit = lowDigit; digit <= highDigit; digit++) {
for (int begin = 0, end = digit; end <= 9; begin++, end++) {
int value = Integer.valueOf(str.substring(begin, end));
if (low <= value && value <= high) {
list.add(value);
}
}
}
return list;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 总结
- 分析出几种情况,然后分别对各个情况实现