虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

您现在的位置是:首页 > 技术阅读 >  每日一题1291:顺次数

每日一题1291:顺次数

时间:2024-02-14

我们定义「顺次数」为:每一位上的数字都比前一位上的数字大 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;
}

};
更多精彩推荐,请关注我们


代码精进之路


  代码精进之路,我们一起成长!