public class Codec {
HashMap<String,String> map ; //<LongUrl,ShortUrl>
//constructor
public Codec(){
this.map = new HashMap<>();
}
// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
//making a random number throuhg math.encoding eg: 53.15 and round it off
//after rounding it off change it into ascii character , it that character
//exists in the HM add another random character to the stringbuilder
//untill it is not contained in the HM
//use SB as operations in SB are in O(1) and in string is o(n)
StringBuilder shortUrl = new StringBuilder();
shortUrl.append((char)(Math.floor(Math.random()*100)));
while(map.containsKey(shortUrl))
shortUrl.append((char)(Math.floor(Math.random()*100)));
map.put(shortUrl.toString(),longUrl);
return shortUrl.toString();
}
// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
String longUrl = map.get(shortUrl);
return longUrl.toString();
}
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter