public static void main(String[] args) {
String url = "https://leetcode.com/problems/encode-and-decode-tinyurl/discuss/";
String encode = encode(url);
String decode = decode(encode);
System.out.println(url);
System.out.println(encode);
System.out.println(decode);
}
static Map<String,String> map = new HashMap<>();
static String base = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
// Encodes a URL to a shortened URL.
public static String encode(String longUrl) {
Integer i = longUrl.hashCode();
map.put(base10ToBase62(i.longValue()),longUrl);
return "http://tinyurl.com/"+base10ToBase62(i.longValue());
}
// Decodes a shortened URL to its original URL.
public static String decode(String shortUrl) {
String s = map.get(shortUrl.replaceAll("http://tinyurl.com/",""));
return s;
}
public static String base10ToBase62(Long n) {
StringBuilder sb = new StringBuilder();
while (n != 0) {
Long l = n % 62;
sb.insert(0,base.charAt(l.intValue()));
n /= 62;
}
return sb.toString();
}
public static Long base62ToBase10(String str) {
Long n = 0l;
for (int i = 0; i < str.length(); i++) {
n=n*62+base.indexOf(str.charAt(i));
}
return n;
}
public int convert(char c) {
if (c >= '0' && c <= '9')
return c - '0';
if (c >= 'a' && c <= 'z') {
return c - 'a' + 10;
}
if (c >= 'A' && c <= 'Z') {
return c - 'A' + 36;
}
return -1;
}
tinyUrl
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...