LeetCode 535. Encode and Decode TinyURL

版权声明:本文为博主原创文章,转载请注明出处,谢谢!

版权声明:本文为博主原创文章,转载请注明出处:http://blog.jerkybible.com/2017/03/08/LeetCode-535-Encode-and-Decode-TinyURL/

访问原文「LeetCode 535. Encode and Decode TinyURL

题目要求

Note: This is a companion problem to the System Design problem: Design TinyURL.

TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/problems/design-tinyurl and it returns a short URL such as http://tinyurl.com/4e9iAk.

Design the encode and decode methods for the TinyURL service. There is no restriction on how your encode/decode algorithm should work. You just need to ensure that a URL can be encoded to a tiny URL and the tiny URL can be decoded to the original 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
28
29
30
31
32
33
private static String TINT_URLBASE = "http://tinyurl.com/";
private static Map<String, String> URL_MAP = new HashMap<>();
/**
* 创建指定数量的随机字符串
*
* @param length
* @return 随机字符串
*/
public String createRandomStreamUrl(int length) {
String invitationCode = "";
// 省略若干
return invitationCode;
}
// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
String tinyUrlTail = createRandomStreamUrl(8);
while (URL_MAP.keySet().contains(tinyUrlTail)) {
tinyUrlTail = createRandomStreamUrl(8);
}
URL_MAP.put(tinyUrlTail, longUrl);
return TINT_URLBASE + tinyUrlTail;
}
// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
int index = shortUrl.lastIndexOf("/");
String tinyUrlTail = shortUrl.substring(index + 1);
return URL_MAP.get(tinyUrlTail);
}