leetcode535_go_TinyURL的加密与解密

leetcode535_go_TinyURL的加密与解密

首页冒险解谜每日解谜更新时间:2024-05-03
题目

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