TinyURL是一种URL简化服务, 比如:当你输入一个URL https://leetcode.com/problems/design-tinyurl 时,
它将返回一个简化的URL http://tinyurl.com/4e9iAk.
要求:设计一个 TinyURL 的加密 encode 和解密 decode 的方法。
你的加密和解密算法如何设计和运作是没有限制的,你只需要保证一个URL可以被加密成一个TinyURL,
并且这个TinyURL可以用解密方法恢复成原本的URL。
解题思路分析1、哈希辅助;时间复杂度O(1),空间复杂度O(n)
type Codec struct {
m map[string]string
index int
}
func Constructor() Codec {
return Codec{
m: make(map[string]string),
index: 1,
}
}
// Encodes a URL to a shortened URL.
func (this *Codec) encode(longUrl string) string {
res := "http://tinyurl.com/" strconv.Itoa(this.index)
this.m[res] = longUrl
this.index
return res
}
// Decodes a shortened URL to its original URL.
func (this *Codec) decode(shortUrl string) string {
return this.m[shortUrl]
}
2、哈希辅助;时间复杂度O(1),空间复杂度O(n)
type Codec struct {
m map[string]string
index int
}
func Constructor() Codec {
return Codec{
m: make(map[string]string),
index: 1,
}
}
// Encodes a URL to a shortened URL.
func (this *Codec) encode(longUrl string) string {
str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
res := "http://tinyurl.com/"
this.index
count := this.index
temp := make([]byte, 0)
for count > 0 {
temp = append(temp, str[countb])
count = count / 62
}
res = res string(temp)
this.m[res] = longUrl
return res
}
// Decodes a shortened URL to its original URL.
func (this *Codec) decode(shortUrl string) string {
return this.m[shortUrl]
}
总结
Medium题目,使用map
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved