[Leetcode] 0271. 文字列のエンコードとデコード

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

エンコードするアルゴリズムを設計する 文字列のリスト に 文字列。エンコードされた文字列はネットワーク経由で送信され、元の文字列リストにデコードされます。

マシン 1 (送信側) には次の機能があります。

文字列エンコード(ベクトルstrs) { // ... コード return encoding_string; }

マシン2(受信機)には次の機能があります。

ベクターdecode(string s) { //... コード return strs; }

そこでマシン 1 は次のことを行います。

文字列をエンコードする_string = encode(strs);

マシン2は次のことを行います。

ベクターstrs2 = デコード(エンコードされた文字列)。

文字列2 マシン2では、 文字列 マシン1で。

実装する エンコード そして デコードする 方法。

シリアル化メソッド(例えば 評価).

 

例 1:

入力: dummy_input = ["こんにちは","世界"]
出力: ["こんにちは世界"]
説明:
マシン 1: Codec エンコーダー = new Codec();文字列 msg = encoding.encode(strs);マシン 1 ---msg---> マシン 2 マシン 2: Codec デコーダー = new Codec();文字列[] strs = デコーダー.decode(msg);

例 2:

入力: ダミー入力 = [""]
出力: [""]

 

制約:

  • 1 <= 文字列の長さ <= 200
  • 0 <= strs[i].length <= 200
  • 文字列[i] 可能な文字をすべて含む 256 有効な ASCII 文字。

 

フォローアップ: あらゆる文字セットで機能する一般化されたアルゴリズムを作成できますか?

パイソン

				
					# 時間計算量: O(n) # 空間計算量: O(n) from entering 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(codec.encode(dummy_input)) print(codec.decode("HelloWorld"))
				
			
ja日本語