美文网首页
每日一题之顺次数

每日一题之顺次数

作者: this_is_for_u | 来源:发表于2020-04-15 20:59 被阅读0次

    题目1291:顺次数

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

    相关文章

      网友评论

          本文标题:每日一题之顺次数

          本文链接:https://www.haomeiwen.com/subject/lfnhvhtx.html