|
@@ -0,0 +1,36 @@
|
|
|
+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));
|