Leetcode Java Encode and Decode TinyURL
업데이트:
문제
코드
class Codec {
private Map<Integer, String> map = new HashMap<>();
private static final String URL = "http://tinyurl.com/";
// Encodes a URL to a shortened URL.
public String encode(String longUrl) {
int key = longUrl.hashCode();
this.map.put(key, longUrl);
return URL.concat(String.valueOf(key));
}
// Decodes a shortened URL to its original URL.
public String decode(String shortUrl) {
return this.map.get(Integer.parseInt(shortUrl.replace(URL, "")));
}
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.decode(codec.encode(url));
결과
설명
- URL을 임의 해시값을 사용하여 아래와 같이 암복호화하는 Codec 클래스를 완성하는 문제이다.
- “https://leetcode.com/problems/design-tinyurl”의 url이 주어지면 “http://tinyurl.com/4e9iAk”와 같이 짧은 url을 반환하고, 해당 url을 호출하면 원본 url로 호출이 수행된다.
- 문제 풀이에 필요한 변수를 정의한다.
- map은 hash값을 이용하여 원본 url을 저장하기 위한 변수로, HashMap으로 초기화한다.
- URL은 예제와 같은 도메인을 저장할 변수로, “http://tinyurl.com/”로 초기화한다.
- 메서드인 encode(String longUrl)를 완성한다.
- longUrl의 해시코드를 key로 정의하고, map 내 key에 해당하는 값을 longUrl로 넣어준다.
- URL에 key를 이어서 짧은 url을 만들어 반환한다.
- 메서드인 decode(String shortUrl)를 완성한다.
- shortUrl에서 URL부분을 제거하고 map에서 해시코드에 해당하는 값을 꺼내 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기