TinyURL 的加密与解密· 6 月更文挑战

298 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

一、题目描述:

TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL leetcode.com/problems/de… 时,它将返回一个简化的URL 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 = "leetcode.com/problems/de…" 输出:"leetcode.com/problems/de…"

解释: Solution obj = new Solution(); string tiny = obj.encode(url); // 返回加密后得到的 TinyURL 。 string ans = obj.decode(tiny); // 返回解密后得到的原本的 URL 。

提示:

1 <= url.length <= 104 题目数据保证 url 是一个有效的 URL

来源:力扣(LeetCode)
链接:leetcode.cn/problems/en…
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。\

二、思路分析:

实际生产中应当是存储在持久化存储中,建立长短url的映射关系 短url生成的方式选择也有很多种,直接哈希或者自行实现一个字符串压缩之类的算法,

  1. 通过 hashCode 找到字符串加密地址
  2. 把这个值和原串放入映射表,形成 加密串->原串 的映射关系
  3. 解密时通过加密串找到原串映射,并返回

三、AC 代码:

public class Codec {
    Map<String,String> link = new HashMap<>();
    // Encodes a URL to a shortened URL.
    public String encode(String longUrl) {
        long code = longUrl.hashCode();
        String s = "http://a.com/"+code;
        link.put(s,longUrl);
        return s;
    }
​
    // Decodes a shortened URL to its original URL.
    public String decode(String shortUrl) {
        return link.get(shortUrl);
    }
}
​
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));

四、总结:

image.png

掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐

希望对你有帮助,期待您找到心意的工作和满意的offer

期待下次再见~

🌇 点赞 👍 收藏 ⭐留言 📝 一键三连 ~关注Jam,从你我做起!