src/main/java/com/amarin/urlshortenerapi/service/BaseConversion.java
package com.amarin.urlshortenerapi.service;
import org.springframework.stereotype.Service;
@Service
public class BaseConversion {
private static final String allowedString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
private char[] allowedCharacters = allowedString.toCharArray();
private int base = allowedCharacters.length;
public String encode(long input){
var encodedString = new StringBuilder();
if(input == 0) {
return String.valueOf(allowedCharacters[0]);
}
while (input > 0) {
encodedString.append(allowedCharacters[(int) (input % base)]);
input = input / base;
}
return encodedString.reverse().toString();
}
public long decode(String input) {
var characters = input.toCharArray();
var length = characters.length;
var decoded = 0;
//counter is used to avoid reversing input string
var counter = 1;
for (int i = 0; i < length; i++) {
decoded += allowedString.indexOf(characters[i]) * Math.pow(base, length - counter);
counter++;
}
return decoded;
}
}