每日一题:力扣670. 最大交换

知识浅谈 🐄🐄🐄🐄🐄大佬
后端领域优质创作者
博客专家认证
2022-09-13 09:37:11

题意

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

示例 1 :

输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :

输入: 9973
输出: 9973
解释: 不需要交换。
注意:

给定数字的范围是 [0, 108]

题解

class Solution {
       public int maximumSwap(int num) {
        char[] chs = (num+"").toCharArray();
        char max1 = chs[0];
        int len=chs.length;
        Character[] tmp = new Character[len];
        for(int i=0;i<len;i++) tmp[i] = chs[i];
        Arrays.sort(tmp,new Comparator<Character>(){
            public int compare(Character c1,Character c2){
                return c2-c1;
            }
        });
        int l,r;
        for(int i=0;i<len;i++){
            if(tmp[i]==chs[i]) continue;
            else{
                l=i;
                r=len-1;
                while(l<r){
                    if(chs[r]==tmp[i]) break;
                    r--;
                }
                char t= chs[i];
                chs[i] = chs[r];
                chs[r] = t;
                break;
            }
        }
        return Integer.parseInt(String.valueOf(chs));
    }
}

img

...全文
227 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,227

社区成员

发帖
与我相关
我的任务
社区描述
知识浅谈(万道面试题)社区,旨在为找工作的小伙伴提供技术内容共享学习平台,助力每位小伙伴找到好工作,欢迎各位小伙伴的加入。
jvm小程序java 个人社区 吉林省·长春市
社区管理员
  • 知识浅谈
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

【社区倡导与禁止】

  • 社区倡导积极发帖,互相交流技术问题,学习心得。
  • 社区不限制技术领域,后端内容增加加精权重
  • 社区禁止发布低俗、不健康的内容

【社区积分规则】

  • 在社区「发帖」得10积分
  • 内容被管理员「加精」得10积分
  • 点赞他人内容得1积分
  • 评论内容得2积分

试试用AI创作助手写篇文章吧