现在需要实现一个长链接转短链接的算法。该算法会将原始长链接转换成一个以"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"]用java代码实现
时间: 2023-02-14 22:29:27 浏览: 77
微博短链接算法php版本实现代码
好的,我给你编写一个 Java 程序来实现长链接转短链接的算法。
首先,我们需要定义一个类来表示长链接和短链接的对应关系。这个类应该包含两个字段,一个表示长链接,一个表示短链接。我们可以叫这个类 LinkMapping。
```
public class LinkMapping {
private String longLink;
private String shortLink;
public LinkMapping(String longLink, String shortLink) {
this.longLink = longLink;
this.shortLink = shortLink;
}
public String getLongLink() {
return longLink;
}
public String getShortLink() {
return shortLink;
}
}
```
然后,我们可以定义一个静态方法来计算长链接的 key 值。这个方法接受一个长链接字符串,返回一个 long 类型的 key 值。
```
private static long computeKey(String longLink) {
long key = 1;
for (int i = 0; i < longLink.length(); i++) {
key = (key * 64 + longLink.charAt(i)) % 56800235584L;
}
return key;
}
```
然后,我们可以定义一个方法来转换长链接到短链接。这个方法接受一个长链接字符串,返回一个短链接字符串。
```
public static String longToShort(String longLink) {
// 计算 key 值
long key = computeKey(longLink);
// 建立 key 值与 6 位字符的映射
StringBuilder shortLink = new StringBuilder();
for (int i = 0; i < 6; i++) {
char c = DICTIONARY.charAt((int) (key % 62));
shortLink.append(c);
key /= 62;
}
// 映
阅读全文