Leetcode Weekly Contest 167:Sequential Digits

1291. Sequential Digits
class Solution {
public:
    vector<int> sequentialDigits(int low, int high){
        string total="123456789";
        int low_num=get_length(low);
        int hight_num=get_length(high);
        vector<int> res;
        
        for(int n=low_num;n<hight_num+1;n++){
            for(int i=0;i<= 9-n;i++){
                int temp = stoi(total.substr(i,n));
                if( temp >= low && temp <= high)
                    res.push_back(temp);
            }
                        
        }
        return res;
    }
    
int get_length(int x)
{
	using namespace std;
	int leng=0;
	while(x)
	{
		x/=10;
		leng++;
	}
	return leng;
}
    
};

自己没有写完,主要是对计算整数的位数,不熟悉语言函数

优秀代码
class Solution 
{
    public:
    vector<int> sequentialDigits(int low, int high) 
    {
        vector<int> result;
        int left=to_string(low).length(), right=to_string(high).length();
        string total="123456789";
        
        for(int i=left;i<=right;i++)
            for(int j=0;j<10-i;j++)
                if(stoi(total.substr(j,i))>=low&&stoi(total.substr(j,i))<=high)
                    result.push_back(stoi(total.substr(j,i)));

        return result;
    }
};

反思与学习
对于整数求位数,可以采用to_string 先变成string格式,再利用string的.length()可以直接获取这个长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值