123456789101112131415161718192021222324252627282930313233343536 |
- public class Codec {
- private int id = 0;
- private HashMap<Integer, String> map = new HashMap<>();
- // Encodes a URL to a shortened URL.
- public String encode(String longUrl) {
- String[] strs = longUrl.split("//");
- map.put(id, strs[0] + "/");
- StringBuilder sb = new StringBuilder();
- sb.append(id++);
- String[] body = strs[1].split("/", -1); // -1 means do not discard the last "" string
- for (String s : body) {
- map.put(id, s);
- sb.append(',');
- sb.append(id++);
- }
- return sb.toString();
- }
- // Decodes a shortened URL to its original URL.
- public String decode(String shortUrl) {
- String[] code = shortUrl.split(",");
- LinkedList<String> list = new LinkedList<>();
- for (String c : code) {
- int id = Integer.parseInt(c);
- String s = map.get(id);
- list.add(s);
- }
- String[] strs = list.toArray(new String[list.size()]);
- return String.join("/", strs);
- }
- }
- // Your Codec object will be instantiated and called as such:
- // Codec codec = new Codec();
- // codec.decode(codec.encode(url));
|