LeetCode第535题,难度中等。
原题地址:https://leetcode-cn.com/problems/encode-and-decode-tinyurl/
题目描述:
TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.
要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/encode-and-decode-tinyurl
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
这题其实挺考验我的,我一直想知道这种短链接是怎么生成的,然后又是怎么解析的。但是这种算法很明显我一时之间想不出来,所以我就想了个笨办法,用Base64加解密...建议参考如下的题解
中文官网题解:
https://leetcode-cn.com/problems/encode-and-decode-tinyurl/solution/
各位也可以百度搜索“短链接生成”了解相关知识。也可以看以下链接https://www.zhihu.com/question/20790447
个人题解:
public class Codec {
/**
* Encodes a URL to a shortened URL.
*/
public String encode(String longUrl) {
return java.util.Base64.getEncoder().encodeToString(longUrl.getBytes());
}
/**
* Decodes a shortened URL to its original URL.
*/
public String decode(String shortUrl) {
return new String(java.util.Base64.getDecoder().decode(shortUrl.getBytes()));
}
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));
结果:
这题,不得不说,我确实不太会,所以就只能用一个最笨的办法了。结果还行吧,还能接受。