美文网首页
LeetCode 第 X 题:36进制加法

LeetCode 第 X 题:36进制加法

作者: 放开那个BUG | 来源:发表于2024-04-29 11:19 被阅读0次

    1、前言

    36进制由0-9,a-z,共36个字符表示。
    要求按照加法规则计算出任意两个36进制正整数的和,如1b + 2x = 48 (解释:47+105=152)
    要求:不允许使用先将36进制数字整体转为10进制,相加后再转回为36进制的做法

    2、思路

    参考十进制的加法,只是十进制没有需要转来转去的过程

    3、代码

    public StringBuilder add36Strings(String num1, String num2){
            int up = 0;
            int i = num1.length() - 1, j = num2.length() - 1;
            StringBuilder builder = new StringBuilder();
            for(; i >= 0 || j >= 0; i--, j--){
                char a = i >= 0 ? num1.charAt(i) : '0';
                char b = j >= 0 ? num2.charAt(j) : '0';
                int av = getInt(a);
                int bv = getInt(b);
                int sum = av + bv + up;
                builder.append(getChar(sum % 36));
                up = sum / 36;
            }
    
            return up == 0 ? builder.reverse() : builder.append(up).reverse();
        }
    
        private int getInt(char a){
            if(a >= '0' && a <= '9'){
                return a - '0';
            }
            return a - 'a' + 10;
        }
    
        private char getChar(int a){
            if(a >= 0 && a <= 9){
                return (char) (a + '0');
            }
            return (char) (a - 10 + 'a');
        }
    

    相关文章

      网友评论

          本文标题:LeetCode 第 X 题:36进制加法

          本文链接:https://www.haomeiwen.com/subject/edfmkdtx.html