首页 > 试题广场 >

最大数字交换

[编程题]最大数字交换
  • 热度指数:1135 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个字符串num,字符串由0~9的正整数组成,你至多可以交换一次字符串中的任意两位字符,使得交换后的num代表的正整数尽可能大。
1.给定的num不会含有前导0,是一个合法的正整数类型的字符串
2.可以不交换,但是最多只能交换一次
数据范围:
示例1

输入

"4556"

输出

"6554"

说明

交换6和4,可以获得最大的正整数6554 
示例2

输入

"5"

输出

"5"
示例3

输入

"8873"

输出

"8873"

说明

不需要交换 
package main
import "strings"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param num string字符串 
 * @return string字符串
*/
func maximumSwap( num string ) string {
    nums:=strings.Split(num,"")
    for i:=0;i<len(nums);i++{
        max:=i
        for j:=i+1;j<len(nums);j++{
            if nums[j]>=nums[max]{
                max=j
            }
        }
        if nums[max]>nums[i]{
            nums[max],nums[i]=nums[i],nums[max]
            break
        }
    }
    return strings.Join(nums,"")
}

发表于 2023-03-29 17:43:46 回复(0)

问题信息

难度:
1条回答 1639浏览

热门推荐

通过挑战的用户

查看代码