用python实现求一个非负数任意交换两次得到新数的最大值
时间: 2024-03-23 13:40:55 浏览: 36
可以使用以下代码实现:
```python
def max_swap(num):
num_list = list(str(num)) # 将数字转换成字符串再转换成列表
max_num = num # 记录最大值
# 第一次交换
for i in range(len(num_list)):
for j in range(i+1, len(num_list)):
num_list[i], num_list[j] = num_list[j], num_list[i] # 交换两个数字的位置
new_num = int(''.join(num_list)) # 将交换后的列表转换成数字
if new_num > max_num:
max_num = new_num
num_list[i], num_list[j] = num_list[j], num_list[i] # 恢复原来的顺序
# 第二次交换
for i in range(len(num_list)):
for j in range(i+1, len(num_list)):
num_list[i], num_list[j] = num_list[j], num_list[i] # 交换两个数字的位置
new_num = int(''.join(num_list)) # 将交换后的列表转换成数字
if new_num > max_num:
max_num = new_num
num_list[i], num_list[j] = num_list[j], num_list[i] # 恢复原来的顺序
return max_num
```
首先将数字转换成字符串再转换成列表,然后使用两层循环对数字进行两次交换,记录每次交换后得到的新数字,如果新数字比记录的最大值还大,就更新最大值。最后返回最大值即可。
例如:
```python
num = 2736
print(max_swap(num)) # 输出 7236
```
在第一次交换中,将数字 2 和 7 交换得到 7236,然后在第二次交换中,将数字 3 和 7 交换得到 7632,由于 7632 不是最大值,所以返回 7236。
阅读全文