我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 1 的整数。
请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表(从小到大排序)。
提示:
10 <= low <= high <= 10^9
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sequential-digits
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1 输出:low = 100, high = 300
2 输出:[123,234]
注意下本文的提示,范围最大为9位数,所以直接枚举即可。采用的方法是滑动窗口;
定义最长串:String s = "123456789";
然后以最小长度到最大长长度在最长串上截取;
public class SequentialDigitsA {
public List<Integer> sequentialDigits(int low, int high) {
List<Integer> ans = new ArrayList<>();
String s = "123456789";
int min_len = String.valueOf(low).length(), max_len = String.valueOf(high).length();
while (min_len <= max_len) {
int temp = 0;
for (int i = 0; i <= 9 - min_len; i++) {
temp = Integer.parseInt(s.substring(i, i + min_len));
if (temp < low) {
continue;
} else if (temp >high) {
break;
} else {
ans.add(temp);
}
}
min_len++;
}
return ans;
}
public static void main(String[] args) {
int low = 1000, high = 13000;
System.out.println(new SequentialDigitsA().sequentialDigits(low, high));
}
}
原文:https://www.cnblogs.com/haifwu/p/14807583.html