内容与度假的运营人员为了更好的向客户介绍商品信息,往往会在推送的商品简介末尾附带一个有关商品详情的链接。这个链接往往非常长,影响了整体内容的排版,为了给客户更好的体验,现在需要实现一个长链接转短链接的算法。该算法会将原始长链接转换成一个以"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。因此,在使用这段代码时,确保你理解该代码背后的具体需求和逻辑,并根据实际情况进行调整和改进。

相关推荐

最新推荐

recommend-type

JavaScript使用push方法添加一个元素到数组末尾用法实例

主要介绍了JavaScript使用push方法添加一个元素到数组末尾,实例分析了javascript中push函数的使用技巧,需要的朋友可以参考下
recommend-type

JS在TextArea光标位置插入文字并实现移动光标到文字末尾

JS在TextArea光标位置插入文字+移动光标到文字末尾,Firefox,Chrome,Safari以及Opera都有selectionStart和selectionEnd属性,具体实现如下,感兴趣的朋友可以参考下哈
recommend-type

1xbet.apk

1xbet.apk
recommend-type

基于Matlab的BP神经网络的非线性系统建模-非线性函数拟合

【作品名称】:基于Matlab的BP神经网络的非线性系统建模-非线性函数拟合 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于Matlab的BP神经网络的非线性系统建模-非线性函数拟合
recommend-type

java等值面图片生成代码实现功能.zip

采用java引用geotools生成等值面,集成sld按照指定样式生成等值面图片
recommend-type

中文翻译Introduction to Linear Algebra, 5th Edition 2.1节

中文翻译Introduction to Linear Algebra, 5th Edition 2.1节 线性代数的核心问题是求解方程组。这些方程都是线性的,即未知数仅与数相乘——我们绝不会 遇见 x 乘以 y。我们的第一个线性方程组较小。接下来你来看看它引申出多远: 两个方程 两个未知数 x − 2y = 1 3x + 2y = 11 (1) 我们一次从一个行开始。第一个方程 x − 2y = 1 得出了 xy 平面的一条直线。由于点 x = 1, y = 0 解 出该方程,因此它在这条直线上。因为 3 − 2 = 1,所以点 x = 3, y = 1 也在这条直线上。若我们选择 x = 101,那我们求出 y = 50。 这条特定直线的斜率是 12,是因为当 x 变化 2 时 y 增加 1。斜率在微积分中很重要,然而这是线 性代数! 图 2.1 将展示第一条直线 x − 2y = 1。此“行图”中的第二条直线来自第二个方程 3x + 2y = 11。你 不能错过两条线的交点 x = 3, y = 1。点 (3, 1) 位于两条线上并且解出两个方程。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

识别MATLAB微分方程求解中的混沌行为:分析非线性方程混沌行为的实用技巧

![matlab求解微分方程](https://img-blog.csdnimg.cn/2021062810300367.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTQ3OTY3OA==,size_16,color_FFFFFF,t_70) # 1. MATLAB微分方程求解概述 微分方程是描述物理、工程和金融等领域中动态系统的数学模型。MATLAB提供了强大的工具来求解微分方程,包括内置求解器和自定义函数
recommend-type

physon如何做ERP系统

作为一个AI语言模型,我可以给您提供一些基本的建议和思路: 1.明确需求和目标:在开始开发ERP系统之前,需要明确您的业务需求和目标,了解您的业务流程、流程数据、员工角色和权限、财务管理等方面的要求,这样才能更好的设计和开发ERP系统。 2.选择技术框架和开发工具:选择合适的技术框架和开发工具是ERP系统开发的关键。选择一种流行的技术框架和工具可以提高开发效率和质量。 3.设计数据库:ERP系统需要一个功能强大的数据库来存储数据。设计数据库需要考虑数据的完整性、安全性和可扩展性。 4.设计系统架构:系统架构是ERP系统的骨架,需要考虑系统的可扩展性、可维护性和性能。 5.开发和测试:
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。