diff options
Diffstat (limited to '')
| -rw-r--r-- | 535/main.go | 48 | 
1 files changed, 48 insertions, 0 deletions
| diff --git a/535/main.go b/535/main.go new file mode 100644 index 0000000..425f9d5 --- /dev/null +++ b/535/main.go @@ -0,0 +1,48 @@ +package main + +import ( +	"crypto/sha256" +	"fmt" +) + +type Codec struct { +	table map[string]string +} + +func Constructor() Codec { +	var codec Codec +	table := make(map[string]string) +	codec.table = table +	return codec +} + +// Encodes a URL to a shortened URL. +func (this *Codec) encode(longUrl string) string { +	hash := sha256.Sum256([]byte(longUrl)) +	hashStr := string(hash[:]) +	tinyUrl := "http://tinyurl.com/" + hashStr +	this.table[hashStr] = longUrl +	return tinyUrl +} + +// Decodes a shortened URL to its original URL. +func (this *Codec) decode(shortUrl string) string { +	return this.table[shortUrl[19:]] + +} + +/** + * Your Codec object will be instantiated and called as such: + * obj := Constructor(); + * url := obj.encode(longUrl); + * ans := obj.decode(url); + */ + +func main() { +	longUrl := "https://leetcode.com/problems/design-tinyurl" +	obj := Constructor() +	url := obj.encode(longUrl) +	fmt.Println(url) +	ans := obj.decode(url) +	fmt.Println(ans) +} | 
