力扣535(java)-TinyURL的加密与解密(中等)
题目:
TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk 。请你设计一个类来加密与解密 TinyURL 。
加密和解密算法如何设计和运作是没有限制的,你只需要保证一个 URL 可以被加密成一个 TinyURL ,并且这个 TinyURL 可以用解密方法恢复成原本的 URL 。
实现 Solution 类:
Solution() 初始化 TinyURL 系统对象。
String encode(String longUrl) 返回 longUrl 对应的 TinyURL 。
String decode(String shortUrl) 返回 shortUrl 原本的 URL 。题目数据保证给定的 shortUrl 是由同一个系统对象加密的。
示例:
输入:url = "https://leetcode.com/problems/design-tinyurl"
输出:"https://leetcode.com/problems/design-tinyurl"
解释:
Solution obj = new Solution();
string tiny = obj.encode(url); // 返回加密后得到的 TinyURL 。
string ans = obj.decode(tiny); // 返回解密后得到的原本的 URL 。
提示:
1 <= url.length <= 104
题目数据保证 url 是一个有效的 URL
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/encode-and-decode-tinyurl
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
我当时还不理解这个题,思路参考官方下面大佬的题解。
利用哈希表:首先设置一个计数器,初值为0,在固定的 URL 前缀后面拼接上计数器的值,即可生成加密后的 TinyURL,再让计数器的值加1,下一次加密就使用更新后的计数器的值,然后使用哈希表存储加密后的TinyURL 和原始 URL 的对应关系,然后返回加密后的TinyURL。在解密时候,又从哈希表中找到加密后的TinyURL 对应的原始 URL 并返回即可。
代码: