• 5385.改变一个整数能得到的最大差值


    image-20200503185110698

    解题

    思路

    • 核心是分类讨论
    • 将数转成字符串,便于截取操作;同时,将数转成字符数组,便于替换
    • 根据要求,若要差值最大,需找到最小值,最大值。
    • 注意不能有前导0
    • 14ms 待优化

    代码

    public int maxDiff(int num) {
            String s = String.valueOf(num);
            int len= s.length();
            char[] chars = s.toCharArray();
            String s1="";
            String s2="";
    
            int max=0,min=0;
            if(len<=1) return 8;
            int index=0;
            //寻找最大数
            while(index<len&&s.charAt(index)=='9'){
                index++;
            }
            s1=s.substring(0,index);
            char c=s.charAt(index);
            for(int i=index;i<len;i++){
                if(chars[i]==c){
                    chars[i]='9';
                }
                s1+=chars[i];
            }
            max=Integer.parseInt(s1);
            index=0;
    //        System.out.println("max:"+max);
    
            //寻找最小数
            chars=s.toCharArray();
            if(s.charAt(0)!='1'){
                c=s.charAt(0);
                for(int i=index;i<len;i++){
                    if(chars[i]==c){
                        chars[i]='1';
                    }
                    s2+=chars[i];
                }
                min=Integer.parseInt(s2);
            }else{
                index=1;
                while(index<len&&(s.charAt(index)=='0'||s.charAt(index)=='1')){
                    index++;
                }
                 //例如 1000  此时index会越界 需要对index进行处理v
                index=Math.min(index,len-1);
                c=s.charAt(index);
                s2=s.substring(0,index);
                for(int i=index;i<len;i++){
                    if(chars[i]==c){
                        chars[i]='0';
                    }
                    s2+=chars[i];
                }
                min=Integer.parseInt(s2);
            }
    //        System.out.println("min:"+min);
            return max-min;
        }
    
  • 相关阅读:
    递归函数写法
    海量数据问题总结
    文本分类项目总结
    梯度提升树-负梯度和残差的理解
    正则化方法L1 L2
    c++-虚函数与多态
    数据结构-并查集
    剑指offer 面试63题
    剑指offer 面试62题
    剑指offer 面试60题
  • 原文地址:https://www.cnblogs.com/yh-simon/p/12823149.html
Copyright © 2020-2023  润新知