Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크
인코딩 알고리즘을 설계하세요 문자열 목록 에게 문자열. 인코딩된 문자열은 네트워크를 통해 전송되고 디코딩되어 원래 문자열 목록으로 돌아갑니다.
기계 1(발신자)은 다음 기능을 가지고 있습니다:
문자열 인코딩(벡터 strs) { // ... 귀하의 코드 return encoding_string; }
기계 2(수신기)는 다음 기능을 갖습니다.
벡터 decode(string s) { //... 귀하의 코드 return strs; }
따라서 기계 1은 다음을 수행합니다.
문자열 인코딩_문자열 = 인코딩(strs);
그리고 기계 2는 다음을 수행합니다.
벡터 strs2 = decode(인코딩된 문자열);
strs2
기계 2에서는 동일해야 합니다. 문자열
기계 1에서.
구현하다 인코딩하다
그리고 풀다
행동 양식.
(예:) 직렬화 방법을 사용하여 문제를 해결할 수 없습니다. 평가하다
).
예시 1:
입력: dummy_input = ["안녕하세요","세상"] 산출: ["안녕하세요","세상"] 설명: 머신 1: 코덱 인코더 = new Codec(); 문자열 메시지 = 인코더.encode(strs); 머신 1 ---msg---> 머신 2 머신 2: 코덱 디코더 = new Codec(); String[] strs = 디코더.디코드(msg);
예 2:
입력: 더미 입력 = [""] 산출: [""]
제약:
1 <= 문자열 길이 <= 200
0 <= strs[i].length <= 200
str[i] 에 대한 설명
가능한 모든 문자를 포함합니다256
유효한 ASCII 문자.
후속 조치: 가능한 모든 문자 집합에 적용할 수 있는 일반화된 알고리즘을 작성할 수 있나요?
목차
비녀장파이썬
# 시간 복잡도: O(n) # 공간 복잡도: O(n) from typing import List class Codec: def __init__(self) -> None: self.stringIndex = [] pass def encode(self, strs: List[str]) -> str: encodeString = "" for string in strs: currentIndex = len(string) self.stringIndex.append(currentIndex) encodeString += string print(self.stringIndex) return encodeString def decode(self, s: str) -> List[str]: decodeList = [] for i, item in enumerate(self.stringIndex): decodeList.append(s[:item]) s = s[item:] return decodeList # Codec 객체가 인스턴스화되고 다음과 같이 호출됩니다. codec = Codec() dummy_input = ["Hello", "World"] print(코덱.인코드(더미_입력)) print(코덱.디코드("HelloWorld"))