LeetCode 第 X 题:36进制加法

2024-04-29  本文已影响0人  放开那个BUG

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');
    }
上一篇 下一篇

猜你喜欢

热点阅读