题目
实现一个 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');
}
}