栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

leetcode 670. 最大交换 python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode 670. 最大交换 python

题目描述:

 题解:贪心

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

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/530092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号