内容与度假的运营人员为了更好的向客户介绍商品信息,往往会在推送的商品简介末尾附带一个有关商品详情的链接。这个链接往往非常长,影响了整体内容的排版,为了给客户更好的体验,现在需要实现一个长链接转短链接的算法。该算法会将原始长链接转换成一个以"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 16:29:25 浏览: 77
C++实现商品管理程序
算法的步骤如下:
1. 对于长地址,计算key值。
2. 建立key值与6位字符的映射。
3. 如果映射字符不够6位,则在前面加0。
4. 返回以"https://short.url/"开头,后接6位映射字符的短链接。
对于短地址,按照以下步骤转换成长地址:
1. 提取6位映射字符。
2. 根据映射字符还原key值。
3. 在第一个字符串数组中查找key值对应的长地址,并返回。
以下是用Java代码实现短地址转长地址的例子:
```
public String[] resolve(String[] long_urls, String[] short_urls) {
// 存储短地址到长地址的映射
Map<String, String> shortToLongMap = new HashMap<>();
for (int i = 0; i < long_urls.length; i++) {
shortToLongMap.put(shorten(long_urls[i]), long_urls[i]);
}
// 解析短地址
String[] results = new String[short_urls.length];
for (int i = 0; i < short_urls.length; i++) {
results[i] = shortToLongMap.get(short_urls[i]);
}
return results;
}
```
阅读全文