题目描述
给你三个 正 整数 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);
}
};
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)