内容与度假的运营人员为了更好的向客户介绍商品信息,往往会在推送的商品简介末尾附带一个有关商品详情的链接。这个链接往往非常长,影响了整体内容的排版,为了给客户更好的体验,现在需要实现一个长链接转短链接的算法。该算法会将原始长链接转换成一个以"https://short.url/"开头的、后接6位映射字符的短链接。算法描述如下: ① 计算key值。key初始为1,每次与64相乘后,和网址每一位字符的ASCII值相加,并每次对56800235584取余。 ② 遇到key值冲突则每次key值加1取余,直到不冲突为止。 ③ 建立key值与6位字符的映射。每一位依次从后往前是key对62取余后在字典"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"中对应的字符,每取一次后key值整除62再取。 ④ 映射字符不够六位,前面加'0'。 输入一个字符串数组表示要映射的长地址,第二个字符串数组表示要恢复的短地址,请将长地址转换成短地址,短地址转换成长地址。(要恢复的短地址一定是第一个数组的长地址转换过去的) 示例1 输入:["http:www.baidu.com","http://www.nowcoder.com"],["http://tiny.urleNm26h"] 返回值:["http://tiny.urleNm26h","http://tiny.urlJc7hPD","http:www.baidu.com"]
时间: 2023-02-14 18:28:49 浏览: 78
首先,我们来实现短链接转长链接的功能。在这个过程中,我们需要将字符串的每一位分离出来,查找其在字典中的位置,然后将其余数乘上 62 的幂次方,最后加起来得到 key 的值。然后遍历第一个字符串数组,求出每个网址的 key 值,如果 key 值和要恢复的短网址的 key 值相同,就将该网址加入到答案数组中。
然后,我们来实现长链接转短链接的功能。这个过程比较简单,我们只需要按照给定的算法来计算 key 值,然后将其转换成 6 位映射字符即可。如果映射字符不足 6 位,就在前面加 0。
最后,将短链接数组和长链接数组合并起来即为答案。
以下是 Python 代码的实现:
```
def url_shorten(long_urls, short_url):
# 建立字典
dict_ = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
# 计算 key 值
key = 1
for c in short_url:
if c == '.':
break
key = (key * 64 + ord(c)) % 56800235584
# 遍历长网址数组,找到 key 值相同的网址
res = []
for url in long_urls:
cur_key = 1
for c in url:
cur_
阅读全文