public StringBuilder encodeTo52(int n){
final int base = 52;
StringBuilder sb = new StringBuilder();
if(n == 0)
sb.append("0");
else{
while(n > 0){
sb.append(map.get(n % base));
n /= base;
}
}
return sb.reverse();
}
public int decode(StringBuilder sb){
int sum = 0;
for(int i=sb.length()-1; i>=0; i--){
sum += (int)Math.pow(base, revmap.get(new Character(sb.charAt(i))));
}
return sum;
}
public void createMap(){
int count = 0;
for(int i=0; i<10; i++){
map.put(count, new Character((char)((int)'0' + i)));
revmap.put(new Character((char)((int)'0' + i)), count);
count++;
}
for(int i=0; i<26; i++){
map.put(count, new Character((char)((int)'a' + i)));
revmap.put(new Character((char)((int)'a' + i)), count);
count++;
}
for(int i=0; i<26; i++){
map.put(count, new Character((char)((int)'A' + i)));
revmap.put(new Character((char)((int)'A' + i)), count);
count++;
}
}