1. 题目
描述
给定一个数字,在数字的任意位置插入一个5,使得插入后的这个数字最大
示例
样例 1:
输入: a = 234
输出: 5234
来源:https://tianchi.aliyun.com/oj/141758389886413149/160295184768372892
2. 解题
- 转成字符串处理,注意正负
class Solution {
public:
/**
* @param a: A number
* @return: Returns the maximum number after insertion
*/
int InsertFive(int a) {
// write your code here
bool negative = a < 0;
a = abs(a);
string num = to_string(a);
int ans = 0;
if(!negative)
{
bool insert = false;
for(int i = 0; i < num.size(); i++)
{ // 非负数,找到第一个小于 5 的数字
if(num[i] < '5')
{
num.insert(num.begin()+i, '5');
insert = true;
break;
}
}
if(!insert)//没有插入过,放在末尾
num += '5';
}
else
{
bool insert = false;
for(int i = 0; i < num.size(); i++)
{ // 负数,找到第一个大于 5 的数字
if(num[i] > '5')
{
num.insert(num.begin()+i, '5');
insert = true;
break;
}
}
if(!insert)//没有插入过,放在末尾
num += '5';
}
for(int i = 0; i < num.size(); ++i)
ans = ans*10+num[i]-'0';//转成int
if(negative)
return -ans;
return ans;
}
};
50ms C++
我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!