LeetCode 第 X 题:36进制加法

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');
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、相关概念 如何根据字母得到对应数字 将'0'-'9'映射到数字0-9,将'a'-'z'映射到数字10-35的方...
    四喜汤圆阅读 7,919评论 0 0
  • 1.二进制求和(67-易) 给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 ...
    _code_x阅读 420评论 0 1
  • ZERO 持续更新 请关注:https://zorkelvll.cn/blogs/zorkelvll/artic...
    zorkelvll阅读 696评论 0 1
  • 计算机常用进制及进制之间的转换 进制的由来 生活中常用的进制 计算机中的二进制 四种进制的介绍 八进制和十六进制 ...
    肖晓以礼阅读 387评论 0 0
  • JavaScript语言精粹 前言 约定:=> 表示参考相关文章或书籍; JS是JavaScript的缩写。 本书...
    微笑的AK47阅读 587评论 0 3