Guest User

Untitled

a guest
Dec 11th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. import java.util.HashMap;
  2. import java.util.Map;
  3.  
  4. /**
  5. * Can be used in shorten url.
  6. * Store urls in DB and get an id, then encode this id to a [a-zA-Z0-9] string
  7. */
  8. public class Base62 {
  9. Map<Character, Integer> char2int = new HashMap<>();
  10. Map<Integer, Character> int2char = new HashMap<>();
  11.  
  12. public Base62() {
  13. int i = 0;
  14. for(char ch = 'a'; ch <= 'z'; ++ch) {
  15. char2int.put(ch, ++i);
  16. int2char.put(i, ch);
  17. }
  18. for(char ch = 'A'; ch <= 'Z'; ++ch) {
  19. char2int.put(ch, ++i);
  20. int2char.put(i, ch);
  21. }
  22. for(char ch = '0'; ch <= '9'; ++ch) {
  23. char2int.put(ch, ++i);
  24. int2char.put(i, ch);
  25. }
  26. }
  27.  
  28. public static void main(String[] args) {
  29. Base62 base62 = new Base62();
  30.  
  31. String encoded = base62.encode(1930943033930040L);
  32.  
  33. System.out.printf("%s %n", encoded);
  34. System.out.printf("%d %n", base62.decode(encoded));
  35. }
  36.  
  37. public String encode(long id) {
  38. StringBuilder encoded = new StringBuilder();
  39. long n = id;
  40. while (n > 0) {
  41. encoded.append(int2char.get((int)(n % 62)));
  42. n /= 62;
  43. }
  44.  
  45. return encoded.reverse().toString();
  46. }
  47.  
  48. public long decode(String url) {
  49. long id = 0;
  50. for(char ch : url.toCharArray()) {
  51. id = id * 62 + char2int.get(ch);
  52. }
  53. return id;
  54. }
  55. }
Add Comment
Please, Sign In to add comment