友情支持
如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜
|
|
有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。

公众号的微信号是: jikerizhi。因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。 |
535. 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
思路分析
简单的哈希映射!如果不考虑去重,代码还可以再简化一点。
-
一刷
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/**
* @author D瓜哥 · https://www.diguage.com
* @since 2026-03-02 20:30:20
*/
public class Codec {
private String base = "http://tinyurl.com/";
private Map<String, Integer> l2s = new HashMap<>();
private Map<Integer, String> s2l = new HashMap<>();
int counter = 0;
// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
if (!l2s.containsKey(longUrl)) {
int value = counter++;
l2s.put(longUrl, value);
s2l.put(value, longUrl);
}
return base + l2s.get(longUrl);
}
// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
int index = shortUrl.lastIndexOf('/') + 1;
int value = Integer.parseInt(shortUrl.substring(index));
return s2l.get(value);
}
}

