Sequential Digits
An integer has sequential digits if and only if each digit in the number is one more than the previous digit.
Return a sorted list of all the integers in the range [low, high]
inclusive that have sequential digits.
Example 1:
Input: low = 100, high = 300 Output: [123,234]
Example 2:
Input: low = 1000, high = 13000 Output: [1234,2345,3456,4567,5678,6789,12345]
Constraints:
10 <= low <= high <= 10^9
class Solution {
public List<Integer> sequentialDigits(int low, int high) {
List<Integer> result = new ArrayList();
String str = "123456789";
int i, j, length = str.length(), num;
for( i = 2; i <= length; i++) {
for( j = 0; j <= length - i; j++) {
num = Integer.parseInt(str.substring(j, j + i));
if(num > high) return result;
if(num >= low) result.add(num);
}
}
return result;
}
}
Here, we are storing sequential format from 1 to 9 in a string. Reason to start from i = 2, the minimum sequential number we can form is 12.
1) Starting from i=2, iterate inner loop j till length-i.
2) For each j iteration, add a each digit from string,
a) If num formed is greater than high return result
b) If num formed is less than low, then add it to list.
3) Finally return result.
Comments
Post a Comment