public class Codec
{
const string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; Dictionary<string, string> url2code = new Dictionary<string, string>();
Dictionary<string, string> code2url = new Dictionary<string, string>(); const string TINYURL = "http://tinyurl.com/"; // Encodes a URL to a shortened URL
public string encode(string longUrl)
{
while (!url2code.ContainsKey(longUrl))//原来没有这个url的short版本
{
//需要生成一个新的
var random = new Random(DateTime.Now.Millisecond);
StringBuilder sb = new StringBuilder();
while (sb.Length < )
{
var index = random.Next();
sb.Append(alphabet[index]);
}
var code = TINYURL + sb.ToString();
if (!code2url.ContainsKey(code))//新生成的这个code,之前没用过
{
url2code.Add(longUrl, code);
code2url.Add(code, longUrl);
}
}
return url2code[longUrl];
} // Decodes a shortened URL to its original URL.
public string decode(string shortUrl)
{
if (code2url.ContainsKey(shortUrl))
{
return code2url[shortUrl];
}
else
{
return shortUrl;
}
}
} // Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));

https://leetcode.com/problems/encode-and-decode-tinyurl/#/description

leetcode535的更多相关文章

随机推荐

  1. typecho去index.php

    RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} ! ...

  2. LOJ6039. 「雅礼集训 2017 Day5」珠宝【决策单调性优化DP】【分治】【思维好题】

    LINK 懒得搬题面 简要题意:n个物品,每个物品有一个价格和一个吸引力,问你对于\(i \in [1,k]\),花费i的价格能得到的最大吸引力 其中价格的范围很小,在\([1,300]\)范围内 思 ...

  3. POJ2728 Desert King 【最优比率生成树】

    POJ2728 Desert King Description David the Great has just become the king of a desert country. To win ...

  4. python模块--logging

    一.logging模块的简单应用 import logging logging.debug('debug message') logging.info('ingo message') logging. ...

  5. 含锂电池的 PCBA 运输快递时如何包装?

    含锂电池的 PCBA 运输快递时如何包装? PCBA 和电池必须固定. PCBA 和电池必须独立包装. 独立包装的外壳必须为硬包装,防止运输中挤压导致短路. 电池电量在 80% 或以下.

  6. 【转】VC中MessageBox与AfxMessageBox用法与区别

    原文网址:http://blog.csdn.net/holybin/article/details/28403109 一.MessageBox()用法 1.函数原型 Messagebox函数在Win3 ...

  7. 容灾管理中的RTO与RPO的关系

    在灾难恢复方面,目前业界公认有三个目标值得努力.一是恢复时间,企业能忍受多长时间没有 IT,处于停业状态:二是网络多长时间能够恢复:三是业务层面的恢复.整个恢复过程中,最关键的衡量指标有两个:一个是 ...

  8. ecmall在linux下的安装注意事项(转)

    今天跟ecshop客服胡娇沟通后知道ecmall基本配置是[LAMP] linux+apache+mysql+php,然后自己开始在linux下安装ecmall并做迁移,整理了一下中间碰到的问题.1. ...

  9. OPCClient和OPCServer在Windows上运行方式的恩怨

    http://www.diangon.com/wenku/PLC/201504/00021970.html 近段时间,遇到不少人都被OPCClient与OPCServer之间的通讯搞得头大,通过几次远 ...

  10. ubuntu 安装Eigen

    Eigen官网 Eigen是一个高层次的C ++库,有效支持线性代数,矩阵和矢量运算,数值分析及其相关的算法. ubuntu下安装: sudo apt-get install libeigen3-de ...