1.问题描述:
给定一个数字,在数字的任意位置插入一个5,使得插入后的这个数字最大
2.样例:
样例 1:
输入: a = 234
输出: 5234
3.代码:
class Solution:
"""
@param a: A number
@return: Returns the maximum number after insertion
"""
def InsertFive(self, a):
# write your code here
if a == 0: return 50
origin_a = a
number = []
count = 0
a = abs(a)
while a:
count += 1
b = a % 10
a = a // 10
number.append(b)
number.reverse()
result = 0
flag = 0
# 判断原始a是正数还是负数
if origin_a > 0:
for i in range(count):
if number[i] <= 5 and flag == 0:
result += 5 * pow(10, count - i)
flag = 1
result += number[i] * pow(10, count - i - flag)
return result
else:
for i in range(count):
if number[i] >= 5 and flag == 0:
result += 5 * pow(10, count - i)
flag = 1
result += number[i] * pow(10, count - i - flag)
return result * -1
本题解题思路是首先循环一次正数a,得到原始a的位数及每个组成数字。这里需要注意的是,要考虑a为负数的情况,所以一开始就使用abs()统一为正数了。之后再根据逻辑,对于原始a是正数时,找到第一个小于等于5的位置即可以插入5;而对于a是负数时,找到第一个大于等于5的位置即可以插入5。