首页 > 试题广场 >

最大数字交换

[编程题]最大数字交换
  • 热度指数: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"

说明

不需要交换 
char* maximumSwap(char* num ) {
    int len = strlen(num);
    int index, tmp;

    for(int i = 0; i < len; i++) {
        index = i;
        for(int j = len - 1; j > i; j--) {
            if(num[j] > num[index]) {
                index = j;
            }
        }
        if(index != i) {
            tmp = num[i];
            num[i] = num[index];
            num[index] = tmp;
            break;
        }
    }
    return num;
}
发表于 2023-01-06 23:22:40 回复(0)

问题信息

难度:
1条回答 1631浏览

热门推荐

通过挑战的用户

查看代码