public class Add36Strings {
public static void main(String[] args) {
String num1 = "1a";
String num2 = "2x";
System.out.println(num1 + " + " + num2 + " = " + add36(num1,num2));
}
private static String add36(String num1 , String num2){
int carry = 0;
int i = num1.length() - 1;
int 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 static int getInt(char ch){
if(ch >= '0' && ch <= '9'){
return ch - '0';
}else{
return ch - 'a' + 10;
}
}
private static char getChar(int n){
if(n <= 9){
return (char) ('0' + n);
}else{
return (char) (n - 10 + 'a');
}
}
}
01-04
161