Leetcode 1291) Sequential Digits
in Algorithms
class Solution {
public List<Integer> sequentialDigits(int low, int high) {
String numbers = "123456789";
String slow = low+"";
int d_low= slow.length();
String shigh = high+"";
int d_high= shigh.length();
List<Integer> l = new ArrayList<>();
int i=0;
String n = numbers.substring(0,0+d_low);
int numb=Integer.parseInt(n);
while(d_low<d_high+1){
if(numb>=low && high>=numb){
l.add(numb);
}
i++;
if(i+d_low==10){
i=0;
d_low++;
}
if(d_low>=10){
break;
}
n = numbers.substring(i,i+d_low);
numb=Integer.parseInt(n);
}
return l;
}
}
다른 풀이
- String.valueOf() 를 사용해 int를 string 으로 바꿔 준 후 length를 땄다. (나는 +”” 로 바꿔줌)
- 이중 포문을 사용해서 바깥쪽 포문은 자리수, 안쪽 포문은 123456789의 substring 을 int로 만들어서 low, high 비교해서 array에 넣어줌.
class Solution {
public List<Integer> sequentialDigits(int low, int high) {
String sample = "123456789";
int n = 10;
List<Integer> nums = new ArrayList();
int lowLen = String.valueOf(low).length();
int highLen = String.valueOf(high).length();
for (int length = lowLen; length <= highLen + 1; length++) {
for (int start = 0; start < n - length; start++) {
int num = Integer.parseInt(sample.substring(start, start + length));
if (num >= low && num <= high) nums.add(num);
}
}
return nums;
}
}