Leetcode 2231. 按奇偶性交换后的最大数字(可以,一次过)
Published on 2022-06-16 10:33 in 分类: C/C++ with 萧海~
分类: C/C++

Leetcode 2231. 按奇偶性交换后的最大数字(可以,一次过)

    在这里插入图片描述
    给你一个正整数 num 。你可以交换 num 中 奇偶性 相同的任意两位数字(即,都是奇数或者偶数)。

    返回交换 任意 次之后 num 的 最大 可能值。

    示例 1:

    输入:num = 1234
    输出:3412
    解释:交换数字 3 和数字 1 ,结果得到 3214
    交换数字 2 和数字 4 ,结果得到 3412
    注意,可能存在其他交换序列,但是可以证明 3412 是最大可能值。
    注意,不能交换数字 4 和数字 1 ,因为它们奇偶性不同。

    示例 2:

    输入:num = 65875
    输出:87655
    解释:交换数字 8 和数字 6 ,结果得到 85675
    交换数字 5 和数字 7 ,结果得到 87655
    注意,可能存在其他交换序列,但是可以证明 87655 是最大可能值。

    提示:

    • 1 <= num <= 10^9

    主要思路:字符串操作
    Code:

    class Solution {
    public:
    int largestInteger(int num) {
    string str=to_string(num);
    int res=0;
    for(int i=0;i<str.length();i++)
    {
    if((str[i]-'0')%2)
    {
    char maxnum=str[i];
    int index=0;
    bool flag=false;
    for(int j=i+1;j<str.length();j++)
    {
    if((str[j]-'0')%2)
    {
    if(str[j]>maxnum)
    {
    flag=true;
    maxnum=str[j];
    index=j;
    }
    }
    }
    if(flag)
    swap(str[index],str[i]);
    }
    else
    {
    char maxnum=str[i];
    int index=0;
    bool flag=false;
    for(int j=i+1;j<str.length();j++)
    {
    if((str[j]-'0')%2==0)
    {
    if(str[j]>maxnum)
    {
    maxnum=str[j];
    index=j;
    flag=true;
    }
    }
    }
    if(flag)
    swap(str[index],str[i]);
    }
    }
    return atoi(str.c_str());
    }
    };
    posted @   萧海~  阅读(75)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
    · 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
    · Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
    · 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
    · AI技术革命,工作效率10个最佳AI工具
    点击右上角即可分享
    微信分享提示
    电磁波切换