我們定義「順次數」為:每一位上的數字都比前一位上的數字大 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
分析
既然是求順次數,那就順序遍歷出來好啦,貌似沒啥需要分析的…
代碼
class Solution {
public:
vector<int> sequentialDigits(int low, int high) {
string str = "123456789";
string low_str = std::to_string(low);
int low_len = low_str.size();
return dfs(str, low_len, low, high);
}
vector<int> dfs(string &str, int low_len, int low, int high) {
vector<int> ret;
for (int i = low_len; i < 10; ++i) {
for (int j = 0; j + i <= str.size(); ++j) {
string tem_str = str.substr(j, i);
int tem_int = stoi(tem_str);
if (tem_int > high) {
return ret;
}
if (tem_int >= low) {
ret.push_back(tem_int);
}
}
}
return ret;
}
};
代碼精進之路
代碼精進之路,我們一起成長!