Leetcode 1291) Sequential Digits

image

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;
  }
}

© 2018. All rights reserved.

Powered by Hydejack v8.5.2