当前位置:网站首页>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];
}
}
边栏推荐
- Redis
- 微信网页调试8.0.19换掉X5内核,改用xweb,所以x5调试方式已经不能用了,现在有了解决方案
- Teach your sister to write the message queue hand in hand
- Continuous test (CT) practical experience sharing
- How to estimate the value of "not selling pens" Chenguang?
- Borui data was selected in the 2022 love analysis - Panoramic report of it operation and maintenance manufacturers
- 网易云信参与中国信通院《实时音视频服务(RTC)基础能力要求及评估方法》标准编制...
- Flipping game (enumeration)
- SD_ DATA_ SEND_ SHIFT_ REGISTER
- 二叉树的基本概念和性质
猜你喜欢
Nat address translation
App capture of charles+postern
2022上半年朋友圈都在传的10本书,找到了
DeSci:去中心化科学是Web3.0的新趋势?
How to share the same storage among multiple kubernetes clusters
50亿,福建又诞生一只母基金
[tpm2.0 principle and Application guide] Chapter 16, 17 and 18
Creative changes brought about by the yuan universe
杰理之相同声道的耳机不允许配对【篇】
Cadre de validation des données Apache bval réutilisé
随机推荐
[mime notes]
【MIME笔记】
cmd命令进入MySQL时报服务名或者命令错误(傻瓜式教学)
PTA 1102 teaching Super Champion volume
State mode - Unity (finite state machine)
编译原理 实验一:词法分析器的自动实现(Lex词法分析)
How to estimate the value of "not selling pens" Chenguang?
Cloud security daily 220707: Cisco Expressway series and telepresence video communication server have found remote attack vulnerabilities and need to be upgraded as soon as possible
前首富,沉迷种田
coming! Gaussdb (for Cassandra) new features appear
6. About JWT
从39个kaggle竞赛中总结出来的图像分割的Tips和Tricks
Desci: is decentralized science the new trend of Web3.0?
Where does brain hole come from? New research from the University of California: creative people's neural connections will "take shortcuts"
Teach your sister to write the message queue hand in hand
Flipping game (enumeration)
Basic operation of chain binary tree (implemented in C language)
App capture of charles+postern
完整的电商系统
Big Ben (Lua)