当前位置:网站首页>LeetCode 535(C#)
LeetCode 535(C#)
2022-07-07 19:17:00 【Just be interesting】
subject
TinyURL It's a kind of URL Simplify services , such as : When you enter a URL https://leetcode.com/problems/design-tinyurl when , It will return a simplified URL http://tinyurl.com/4e9iAk . Please design a class to encrypt and decrypt TinyURL .
There is no limit to how encryption and decryption algorithms are designed and operated , You just need to guarantee one URL Can be encrypted into a TinyURL , And this TinyURL It can be restored to the original by decryption URL .
Realization Solution class :
Solution() initialization TinyURL System object .
String encode(String longUrl) return longUrl Corresponding TinyURL .
String decode(String shortUrl) return shortUrl The original URL . The subject data guarantees a given shortUrl Is encrypted by the same system object .
Example :
Input :url = “https://leetcode.com/problems/design-tinyurl”
Output :“https://leetcode.com/problems/design-tinyurl”
explain :
Solution obj = new Solution();
string tiny = obj.encode(url); // Returns the result of encryption TinyURL .
string ans = obj.decode(tiny); // Returns the original after decryption URL .
Code
- Direct addressing ( Hash )
public class Codec
{
private const int K1 = 10007;
private const int K2 = 1000000007;
private Dictionary<string, int> url2Key = new Dictionary<string, int>();
private Dictionary<int, string> key2Url = new Dictionary<int, string>();
// Encodes a URL to a shortened URL
public string encode(string longUrl)
{
if (url2Key.ContainsKey(longUrl))
return "http://tinyurl.com/" + url2Key[longUrl];
int key = 0;
long b = 1;
foreach (char c in longUrl)
{
key = (int)((long)key * b + c) % K2;
b = (b * K1) % K2;
}
while (key2Url.ContainsKey(key))
key++;
url2Key.Add(longUrl, key);
key2Url.Add(key, longUrl);
return "http://tinyurl.com/" + key;
}
// Decodes a shortened URL to its original URL.
public string decode(string shortUrl)
{
int idx = shortUrl.LastIndexOf('/') + 1;
int key = int.Parse(shortUrl[idx..]);
return key2Url[key];
}
}
- Zipper addressing ( Hash )
public class Codec
{
private const int K1 = 10007;
private const int K2 = 1000000007;
private Dictionary<string, (int, int)> url2Key =
new Dictionary<string, (int, int)>();
private Dictionary<int, IList<string>> key2Url =
new Dictionary<int, IList<string>>();
// Encodes a URL to a shortened URL
public string encode(string longUrl)
{
if (url2Key.ContainsKey(longUrl))
{
var key = url2Key[longUrl];
return "http://tinyurl.com/" + key.Item1.ToString() + '.' + key.Item2.ToString();
}
int key1 = 0;
long P = 1;
foreach (char c in longUrl)
{
key1 = (int)((long)(key1 * P + c) % K2);
P = P * K1 % K2;
}
if (!key2Url.ContainsKey(key1)) key2Url.Add(key1, new List<string>());
key2Url[key1].Add(longUrl);
int key2 = key2Url[key1].Count - 1;
url2Key.Add(longUrl, (key1, key2));
return "http://tinyurl.com/" + key1.ToString() + '.' + key2.ToString();
}
// Decodes a shortened URL to its original URL.
public string decode(string shortUrl)
{
string[] strs = shortUrl[(shortUrl.LastIndexOf('/') + 1)..].Split('.');
int key1 = int.Parse(strs[0]);
int key2 = int.Parse(strs[1]);
return key2Url[key1][key2];
}
}
边栏推荐
- 5billion, another master fund was born in Fujian
- Zhong Xuegao wants to remain innocent in the world
- 50亿,福建又诞生一只母基金
- 6. About JWT
- Desci: is decentralized science the new trend of Web3.0?
- Flipping game (enumeration)
- Policy mode - unity
- For friends who are not fat at all, nature tells you the reason: it is a genetic mutation
- The moveposition function of rigidbody2d of unity2d solves the problem of people or screen jitter when moving
- 多个kubernetes集群如何实现共享同一个存储
猜你喜欢
Scientists have observed for the first time that the "electron vortex" helps to design more efficient electronic products
DeSci:去中心化科学是Web3.0的新趋势?
Wechat web debugging 8.0.19 replace the X5 kernel with xweb, so the X5 debugging method can no longer be used. Now there is a solution
数据验证框架 Apache BVal 再使用
App capture of charles+postern
Basic operation of chain binary tree (implemented in C language)
數據驗證框架 Apache BVal 再使用
Version 2.0 of tapdata, the open source live data platform, has been released
Redis
[information security laws and regulations] review
随机推荐
POJ 1182 :食物链(并查集)[通俗易懂]
AI writes a poem
企业MES制造执行系统的分类与应用
最长公共前缀(leetcode题14)
ES6 note 1
Numpy——axis
Antisamy: a solution against XSS attack tutorial
Nat address translation
[software test] from the direct employment of the boss of the enterprise version, looking at the resume, there is a reason why you are not covered
IP netns command (memo)
Recommend free online SMS receiving platform in 2022 (domestic and foreign)
微服务远程Debug,Nocalhost + Rainbond微服务开发第二弹
咋吃都不胖的朋友,Nature告诉你原因:是基因突变了
App capture of charles+postern
微信网页调试8.0.19换掉X5内核,改用xweb,所以x5调试方式已经不能用了,现在有了解决方案
Seize Jay Chou
[Tawang methodology] Tawang 3W consumption strategy - U & a research method
For friends who are not fat at all, nature tells you the reason: it is a genetic mutation
DeSci:去中心化科学是Web3.0的新趋势?
杰理之相同声道的耳机不允许配对【篇】