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');
}
网友评论