leetcode题解-535. Encode and Decode TinyURL
来源:互联网 发布:喝酒的好处知乎 编辑:程序博客网 时间:2024/05/18 00:48
题目: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.
这道题也是新加的,目的是实现URL短连接,最常见的是微博,因为微博中每条博文不得超过140字,所以想要分享链接时就必须使用短连接。那么如何实现呢?一种最简单直接的方法,就跟CSDN博客一样,就从0开始往上叠加即可,因为测试用例只用几百条,所以这种方法就钻了这个空子,可以accept。但是并未向题目描述所言使用大小写的英文字母。代码入下:
List<String> url = new ArrayList<>(); // Encodes a URL to a shortened URL. public String encode(String longUrl) { url.add(longUrl); return "http://tinyurl.com/" + (url.size()-1); } // Decodes a shortened URL to its original URL. public String decode(String shortUrl) { String[] ss = shortUrl.split("/"); int n = Integer.parseInt(ss[ss.length-1]); return url.get(n); }
另外一种思路就是按照题目的要求,将长短链接进行一一映射,那么如何实现这个映射算法,才能保证编解码的唯一性呢??我们可以使用两个Map来分别保存,
Map<Integer, String> map1=new HashMap<Integer, String>(); Map<String, Integer> map2=new HashMap<String, Integer>(); String s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // Encodes a URL to a shortened URL. public String encode1(String longUrl) { if(!map2.containsKey(longUrl)) { map1.put(map1.size()+1,longUrl); map2.put(longUrl, map2.size()+1); } int n=map2.get(longUrl); StringBuilder sb=new StringBuilder(); //首先每个longUrl的索引n是不同的,可以使用对62的商和余数唯一标识n,然后将s中相应位置的字符插入短连接即可。 while(n>0) { //共有62个字符可以用于短连接的编码 int r=n%62; n/=62; sb.insert(0,s.charAt(r)); } return sb.toString(); } // Decodes a shortened URL to its original URL. public String decode1(String shortUrl) { int val=0; int n=shortUrl.length(); for(int i=0;i<n;i++) { val=val*62+s.indexOf(shortUrl.charAt(i)); } return map1.get(val); }
0 0
- leetcode题解-535. Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- LeetCode:535. Encode and Decode TinyURL
- Leetcode 535. Encode and Decode TinyURL
- leetcode 535. Encode and Decode TinyURL
- Leetcode 535. Encode and Decode TinyURL
- LeetCode 535. Encode and Decode TinyURL
- 【LeetCode】535. Encode and Decode TinyURL
- python--leetcode 535. Encode and Decode TinyURL
- leetcode 535. Encode and Decode TinyURL
- LeetCode-Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- 535. Encode and Decode TinyURL
- Unity3D笔记(一)基础知识学习笔记
- codeforces 782B The Meeting Place Cannot Be Changed
- 使用matlab实现简单的遗传算法(一)
- 【LeetCode】54. Spiral Matrix
- VS2010对话框,FTP遍历目录显示在对话框中,选择列表项下载文件或者目录主程序代码
- leetcode题解-535. Encode and Decode TinyURL
- urlparse相关知识
- 第三方物流WMS 智慧仓储管理系统SmartWMS标准版产品迭
- 全排列
- selenium+python:自动化po分层
- 使用Navicat快速生成数据库字典
- 学习数据库开发的建议和忠告
- C# 线程
- 如何安装weinre?