题目描述

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

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

一开始,如果有数字 少于 四位数,给它补 前导 0 。
答案 key 的第 i 个数位(1 请你返回三个数字 没有 前导 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(ab&&ac)
            return a;
        if(ba&&bc)
            return b;
        if(ca&&cb)
            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;i4-size1;i++)
            s1="0"+s1;
        for(int i=0;i4-size2;i++)
            s2="0"+s2;
        for(int i=0;i4-size3;i++)
            s3="0"+s3;
        for(int i=0;i4;i++)
        {
            ans=ans+to_string(Min((s1[i]-'0'),(s2[i]-'0'),(s3[i]-'0')));
        }
        return stoi(ans);

    }
};

在这里插入图片描述

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。