36进制相加--字节青训营

118 阅读1分钟

题目

实现一个 36 进制的加法 0-9 a-z。

示例

输入:["abbbb","1"],输出:"abbbc"

String add36Strings(String num1, String num2) {
    int carry = 0;
    int i = num1.length() - 1, j = num2.length() - 1;
    StringBuilder sb = new StringBuilder();
    while (i >= 0 || j >= 0 || carry != 0) {
        int x = i >= 0 ? getInt(num1.charAt(i)) : 0;
        int y = j >= 0 ? getInt(num2.charAt(j)) : 0;
        int sum = x + y + carry; //本次结果
        sb.append(getChar(sum % 36));
        carry = sum / 36; //进位
        i--;
        j--;
    }
    //翻转
    return sb.reverse().toString();
}

private int getInt(char i) {
    if (i >= '0' && i <= '9') {
        return i - '0';
    } else {
        return i - 'a' + 10;
    }
}

private char getChar(int i) {
    if (i <= 9) {
        return (char) (i + '0');
    } else {
        return (char) (i - 10 + 'a');
    }
}