内容与度假的运营人员为了更好的向客户介绍商品信息,往往会在推送的商品简介末尾附带一个有关商品详情的链接。这个链接往往非常长,影响了整体内容的排版,为了给客户更好的体验,现在需要实现一个长链接转短链接的算法。该算法会将原始长链接转换成一个以"https://short.url/"开头的、后接6位映射字符的短链接。算法描述如下: ① 计算key值。key初始为1,每次与64相乘后,和网址每一位字符的ASCII值相加,并每次对56800235584取余。 ② 遇到key值冲突则每次key值加1取余,直到不冲突为止。 ③ 建立key值与6位字符的映射。每一位依次从后往前是key对62取余后在字典"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"中对应的字符,每取一次后key值整除62再取。 ④ 映射字符不够六位,前面加'0'。 输入一个字符串数组表示要映射的长地址,第二个字符串数组表示要恢复的短地址,请将长地址转换成短地址,短地址转换成长地址。(要恢复的短地址一定是第一个数组的长地址转换过去的)
时间: 2023-02-14 20:30:02 浏览: 44
长链接转短链接的算法如下:
1. 计算长链接的key值。首先将key设为1,然后将key与64相乘,再将key加上长链接每一位字符的ASCII值,最后将key对56800235584取余。
2. 如果key值冲突,则每次将key加1取余,直到key值不冲突为止。
3. 建立key值与6位字符的映射。从后往前每一位字符都是key对62取余后在字典"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"中对应的字符,每取一次后key值整除62再取。
4. 如果映射字符不够六位,则在前面加0。
短链接转长链接的算法如下:
1. 建立6位字符与key值的映射。从前往后每一位字符都是在字典"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"中对应的字符,然后将这个字符的ASCII值乘上62的对应次幂,最后将所有结果相加得到key值。
2. 使用key值恢复长链接。将key值除以64,然后将除法的余数与ASCII值相加得到长链接的每一位字符。
相关问题
在列表末尾加入一个元素,让元素一定与原列表最后一个元素不相同
好的,您的问题是在列表末尾加入一个元素,让元素一定与原列表最后一个元素不相同。可以采用以下方法实现:先取出原列表中最后一个元素,然后在一定范围内随机生成一个与该元素不同的新元素,最后将新元素添加到列表末尾即可。不过具体的实现方式可能会根据编程语言和具体场景的不同而有所变化,您可以告诉我所用的编程语言和具体场景,我可以为您提供更详细的答案。
如果哈希值的长度为 31,则会在末尾添加一个连字符 "-"。这可能是为了处理特定的需求或逻辑
是的,如果哈希值的长度为 31,添加连字符 "-" 可能是为了满足特定的需求或逻辑。具体原因可能是为了在哈希值的字符串表示中增加一个特殊的标记,以便后续处理或解析时能够识别出特定的情况。
例如,可能存在某些系统或应用程序要求哈希值的长度必须为固定长度,而由于某些原因,MD5 哈希算法的输出长度可能为 31。为了满足这个要求,开发者可能选择在哈希值末尾添加一个连字符 "-",以便在后续处理中能够正确解析这个特殊情况。
需要注意的是,这个处理方式并不是标准的做法,而且在一般情况下,MD5 哈希值的长度应该是 32。因此,在使用这段代码时,确保你理解该代码背后的具体需求和逻辑,并根据实际情况进行调整和改进。