leetcode535 TinyURL 的加密与解密,设计加解密

2019-10-17  本文已影响0人  安夏深蓝翼

TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.

要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。

答案:

public class Codec {

String alphabet = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

HashMap<String, String> map = new HashMap<>();

Random rand = new Random();

String key = getRand();

public String getRand() {

StringBuilder sb = new StringBuilder();

for (int i = 0; i < 6; i++) {

sb.append(alphabet.charAt(rand.nextInt(62)));

}

return sb.toString();

}

public String encode(String longUrl) {

while (map.containsKey(key)) {

key = getRand();

}

map.put(key, longUrl);

return "http://tinyurl.com/" + key;

}

public String decode(String shortUrl) {

return map.get(shortUrl.replace("http://tinyurl.com/", ""));

}

}

上一篇 下一篇

猜你喜欢

热点阅读