[Leetcode] 0271. 문자열 인코딩 및 디코딩

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"))
				
			
ko_KR한국어