算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !
今天和大家聊的问题叫做 TinyURL 的加密与解密,我们先来看题面:
https://leetcode-cn.com/problems/encode-and-decode-tinyurl/
TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk.
要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,并且这个TinyURL可以用解密方法恢复成原本的URL。
1.设计加解密有多种做法,一种是使用定下的规则(aes、des等)进行加解密,还有一种更加简单,用文件存储或者内存存储,以key、value形式存储加解密之后的字符串
2.这里我们简单一些,用map来存储,key为当前加解密的字符串是第几个,value为原始字符串
3.每次加密时,固定输出叠加的index即可
4.每次解密是,只需要根据index,返回相应的value即可
public class Codec {
Map<Integer, String> map = new HashMap<Integer, String>();
int index = 0;
public String encode(String longUrl) {
map.put(index, longUrl);
return "http://tinyurl.com/" + index++;
}
public String decode(String shortUrl) {
return map.get(shortUrl.charAt(shortUrl.length() - 1) - '0');
}
}
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。
上期推文: