​LeetCode刷题实战535:TinyURL 的加密与解密

程序IT圈

共 1459字,需浏览 3分钟

 ·

2022-02-26 12:34

算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从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 map = new HashMap();
    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');
    }
}


好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-520题汇总,希望对你有点帮助!
LeetCode刷题实战521:最长特殊序列 Ⅰ
LeetCode刷题实战522:最长特殊序列 II
LeetCode刷题实战523:连续的子数组和
LeetCode刷题实战524:通过删除字母匹配到字典里最长单词
LeetCode刷题实战525:连续数组
LeetCode刷题实战526:优美的排列
LeetCode刷题实战527:单词缩写
LeetCode刷题实战528:按权重随机选择
LeetCode刷题实战529:扫雷游戏
LeetCode刷题实战530:二叉搜索树的最小绝对差
LeetCode刷题实战531:孤独像素 I
LeetCode刷题实战532:数组中的K-diff数对
LeetCode刷题实战533:孤独像素 II
LeetCode刷题实战534:游戏玩法分析 III

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报