题目描述:
题解:贪心
1.将输入的整数num转为字符串形式num_str。
2.从num_str第一个位置开始,对每个位置i,判断其之后的位置有没有比num_str[i]大的字符greater_num,如果有则记录位置greater_pos(如果有多个相等的greater_num),则取最后一个位置的。
3.因为只交换一次,如果找到了一个比num_str[i]大的值,则停止继续搜索,构造一个新的字符串result,依次向其中添加字符,将num_str[i]与num_str[greater_pos]交换。
4.如果没有找到,则说明输入的数字已经是最大的,直接返回num。
class Solution(object):
def maximumSwap(self, num):
num_str = str(num)
for i in range(len(num_str)):
greater_num = '0'
greater_pos = -1
c = num_str[i]
for j in range(i+1,len(num_str)):
if num_str[j]>num_str[i]:
greater_num = max(greater_num,num_str[j])
if greater_num==num_str[j]:
greater_pos = j
if greater_pos!=-1:
result = ""
for k in range(len(num_str)):
if k == i:
result = result + num_str[greater_pos]
elif k == greater_pos:
result = result + num_str[i]
else:
result = result + num_str[k]
return int(result)
if greater_pos==-1:
return num_str



