leetcode535. Encode and Decode TinyURL
2020/1/31 5:19:35
本文主要是介绍leetcode535. Encode and Decode TinyURL,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目要求
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之间的映射分别进行存储即可。
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(); }
这篇关于leetcode535. Encode and Decode TinyURL的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享