力扣刷题--3270.求出数字答案【简单】

题目描述

给你三个 正 整数 num1 ,num2 和 num3 。

数字 num1 ,num2 和 num3 的数字答案 key 是一个四位数,定义如下:

一开始,如果有数字 少于 四位数,给它补 前导 0 。
答案 key 的第 i 个数位(1 <= i <= 4)为 num1 ,num2 和 num3 第 i 个数位中的 最小 值。
请你返回三个数字 没有 前导 0 的数字答案。

示例 1:

输入:num1 = 1, num2 = 10, num3 = 1000

输出:0

解释:

补前导 0 后,num1 变为 “0001” ,num2 变为 “0010” ,num3 保持不变,为 “1000” 。

数字答案 key 的第 1 个数位为 min(0, 0, 1) 。
数字答案 key 的第 2 个数位为 min(0, 0, 0) 。
数字答案 key 的第 3 个数位为 min(0, 1, 0) 。
数字答案 key 的第 4 个数位为 min(1, 0, 0) 。
所以数字答案为 “0000” ,也就是 0 。

示例 2:

输入: num1 = 987, num2 = 879, num3 = 798

输出:777

示例 3:

输入:num1 = 1, num2 = 2, num3 = 3

输出:1

算法分析

要熟练掌握如何将字符串,字符,与数字直间的转化

完整代码

class Solution {
public:
    int Min(int a,int b,int c)
    {
        if(a<=b&&a<=c)
            return a;
        if(b<=a&&b<=c)
            return b;
        if(c<=a&&c<=b)
            return c;

        return 0;
    }

    int generateKey(int num1, int num2, int num3) {
        string ans;
        //先把所有的字母转为字符串
        string s1=to_string(num1);
        string s2=to_string(num2);
        string s3=to_string(num3);
        //统一标准
        int size1=s1.size();
        int size2=s2.size();
        int size3=s3.size();
        //补齐0
        for(int i=0;i<4-size1;i++)
            s1="0"+s1;
        for(int i=0;i<4-size2;i++)
            s2="0"+s2;
        for(int i=0;i<4-size3;i++)
            s3="0"+s3;
        for(int i=0;i<4;i++)
        {
            ans=ans+to_string(Min((s1[i]-'0'),(s2[i]-'0'),(s3[i]-'0')));
        }
        return stoi(ans);

    }
};

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小小苏

感谢大佬支持!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值