前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >leetcode535. Encode and Decode TinyURL

leetcode535. Encode and Decode TinyURL

作者头像
眯眯眼的猫头鹰
发布2020-05-12 10:56:54
3750
发布2020-05-12 10:56:54
举报

题目要求

Note: This is a companion problem to the System Design problem:Design TinyURL-System/).

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转化为短URL,即通过长URL可以生成短URL,短URL也可以找到长URL。

思路和代码

通过Map结构就可以实现,只需要将长URL和短URL之间的映射分别进行存储即可。

代码语言:javascript
复制
private Map<String, String> longToShortUrl = new HashMap<>();  
private Map<String, String> shortToLongUrl = new HashMap<>();  
  
private static final String SHORT\_URL\_PREFIX \= "http://tinyurl.com/";  
  
private static final String AVAILABLE_CHARACTERS = "1234567890qwertyuiopasdfghjklzxcvbnm";  
  
private Random random = new Random();  
// Encodes a URL to a shortened URL.  
public String encode(String longUrl) {  
    if (longToShortUrl.containsKey(longUrl)) {  
        return SHORT_URL_PREFIX + longToShortUrl.get(longUrl);  
    }  
    String result;  
    do{  
        result = getRandomShortUrl(6);  
    } while (shortToLongUrl.containsKey(result));  
    longToShortUrl.put(longUrl, result);  
    shortToLongUrl.put(result, longUrl);  
    return SHORT_URL_PREFIX + result;  
}  
  
// Decodes a shortened URL to its original URL.  
public String decode(String shortUrl) {  
    String shortRandomCharacters = shortUrl.replace(SHORT_URL_PREFIX, "");  
    return shortToLongUrl.get(shortRandomCharacters);  
}  
  
private String getRandomShortUrl(int length) {  
    StringBuilder sb = new StringBuilder();  
    while (length-- > 0) {  
        int randomIndex = (int)(Math.random() * AVAILABLE_CHARACTERS.length());  
        sb.append(AVAILABLE_CHARACTERS.charAt(randomIndex));  
    }  
    return sb.toString();  
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目要求
  • 思路和代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档