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

发布于:2024-09-05 ⋅ 阅读:(117) ⋅ 点赞:(0)

题目描述

给你三个 正 整数 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);

    }
};

在这里插入图片描述