Encode and Decode TinyURL

LeetCode Encode and Decode TinyURL

先贴上题目:
TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/problems/design-tinyurl and it returns a short URL such as http://tinyurl.com/4e9iAk.

Design the encode and decode methods for the TinyURL service. There is no restriction on how your encode/decode algorithm should work. You just need to ensure that a URL can be encoded to a tiny URL and the tiny URL can be decoded to the original URL.

显然题目的意思是将将一个较长的url编码成一个较短的url,然后在通过解码还原成较短的url。题目中例子是:

https://leetcode.com/problems/design-tinyurl —编码—http://tinyurl.com/4e9iAk

http://tinyurl.com/4e9iAk – 解码—https://leetcode.com/problems/design-tinyurl

而在要求中并没有对编码和解码的算法有限制,所以还有有比较多解法的。第一个思路采用List集合,编码过程是:将原来的URL放入集合中,然后返回其在List集合中的下标(需要转化为String类型);解码过程是:此时传入该URL返回的下标(需要转化为Int类型),然后通过下标取出List中的原URL。具体代码如下:

public static String encode(String longUrl){
    urls.add(longUrl);
    return String.valueOf(urls.size()-1);
}

public static String decode(String shortUrl){
    int index = Integer.valueOf(shortUrl);
    return urls.get(index);     
}

第二种思路是利用HashMap,将size和原url放入map中,形成键值对。解码时根据键去值,即可得到原来的url。具体实现代码如下:

public class Codec {

private static Map<String,String> hashmap = new HashMap<String,String>();

// Encodes a URL to a shortened URL.
public String encode(String longUrl) {   
    hashmap.put(String.valueOf(hashmap.size()+1), longUrl);
    return String.valueOf(hashmap.size());
}

// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
    return hashmap.get(shortUrl);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值