535. Encode and Decode TinyURL - LeetCode
Question
535. Encode and Decode TinyURL

Solution
题目大意:实现长链接加密成短链接,短链接解密成长链接
思路:加密成短链接+key,将长链接按key保存到map,解密时根据短链接提取key,再从map中返回长链接
Java实现:
public class Codec {
    // https://leetcode.com/problems/design-tinyurl --> http://tinyurl.com/4e9iAk
    Map<Integer, String> map = new HashMap<>();
    int i = 0;
    // Encodes a URL to a shortened URL.
    public String encode(String longUrl) {
        map.put(i, longUrl);
        return "http://tinyurl.com/" + (i++);
    }
    // Decodes a shortened URL to its original URL.
    public String decode(String shortUrl) {
        int key = Integer.parseInt(shortUrl.substring(shortUrl.lastIndexOf("/") + 1));
        return map.get(key);
    }
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));
Ref
Using simple counter
public class Codec {
    Map<Integer, String> map = new HashMap<>();
    int i=0;
    public String encode(String longUrl) {
        map.put(i,longUrl);
        return "http://tinyurl.com/"+i++;
    }
    public String decode(String shortUrl) {
        return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", "")));
    }
}
Using hashcode
public class Codec {
    Map<Integer, String> map = new HashMap<>();
    public String encode(String longUrl) {
        map.put(longUrl.hashCode(),longUrl);
        return "http://tinyurl.com/"+longUrl.hashCode();
    }
    public String decode(String shortUrl) {
        return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", "")));
    }
}
Using random function
public class Codec {
    Map<Integer, String> map = new HashMap<>();
    Random r=new Random();
    int key=r.nextInt(10000);
    public String encode(String longUrl) {
        while(map.containsKey(key))
            key= r.nextInt(10000);
        map.put(key,longUrl);
        return "http://tinyurl.com/"+key;
    }
    public String decode(String shortUrl) {
        return map.get(Integer.parseInt(shortUrl.replace("http://tinyurl.com/", "")));
    }
}
												
											535. Encode and Decode TinyURL - LeetCode的更多相关文章
- LC 535. Encode and Decode TinyURL
		
Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...
 - 【Leetcode】535. Encode and Decode TinyURL
		
Question: TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/pro ...
 - [LeetCode] 535. Encode and Decode TinyURL 编码和解码短网址
		
Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...
 - 【LeetCode】535. Encode and Decode TinyURL 解题报告(Python & C++)
		
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:数组 方法二:字典 日期 题目地址:https://l ...
 - 535. Encode and Decode TinyURL 长短URL
		
[抄题]: TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/problem ...
 - 535. Encode and Decode TinyURL(rand and srand)
		
Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...
 - 535. Encode and Decode TinyURL
		
▶ 要求给出一种对 URL 网址进行压缩和解压的算法,例如 https://leetcode.com/problems/design-tinyurl ←→ http://tinyurl.com/4e9 ...
 - 535 Encode and Decode TinyURL 编码和解码精简URL地址
		
详见:https://leetcode.com/problems/encode-and-decode-tinyurl/description/ C++: class Solution { public ...
 - [LeetCode] Encode and Decode TinyURL 编码和解码精简URL地址
		
Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...
 
随机推荐
- 顺利通过EMC实验(19)
 - MEVN 架构(MongoDB + Express + Vue + NODEJS)搭建
			
一个完整的网站服务架构包括:1.web frame ---这里应用express框架2.web server ---这里应用nodejs3.Database ---这里应用monggoDB4.前端展示 ...
 - Idea中配置Tomcat以及运行maven项目
			
maven安装和详细配置 提示:下面是Tomcat9.0版本的下载链接,需要其他版本的去官方网站下载. 链接:https://pan.baidu.com/s/1CONf8KVXM4gyJj4pxjFB ...
 - vue中Promise对象用法
			
Promise.all([ 需要异步一起执行的方法---------先做的事 ]).then(res=>{ 后做的事(先做的事已经做好了) }) 举栗子: Promise.all([ this. ...
 - 从零开始的 Hexo 生活(一)入门安装篇
			
目录 前言 一.Hexo 是什么 1.什么是静态网站 2.为什么选择静态网站 3.为什么选择 Hexo 二.Markdown 是什么 1.为什么要学 Markdown 2.怎么学 Markdown 三 ...
 - phpshe xml注入
			
*php商城系统 xml注入* **页面样式* *Xml原理参考:* https://www.cnblogs.com/20175211lyz/p/11413335.html *漏洞函数simplexm ...
 - 帝国CMS网站地图生成插件
			
可以生成电脑端也可以生成手机端的地图XML. 安装方法: 这个帝国sitemap插件的安装跟其他插件的安装方式一样,介于可能有人不会安装帝国的插件,就写一下吧,以后你们如果碰到帝国插件也可以参考这个. ...
 - 虚拟机VMware的安装与Xshell的应用
			
先安装VMware 1.安装就按照提示一点点安装就行了 配置网络 打开VMware 这里的IOS映像文件在https://developer.aliyun.com/mirror/里下载 这里用方向键往 ...
 - switch语法
			
1. js 代码 // 1. switch 语句也是多分支语句 也可以实现多选1 // 2. 语法结构 switch 转换.开关 case 小例子或者选项的意思 // switch (表达式) { / ...
 - Em 和 Rem 的基本使用
			
1. Em html 结构 <div id="box-1"> <h3>Box One</h3> <p> Lorem ipsum do ...