Skip to content

Commit bc5f114

Browse files
committed
add solution: encode-and-decode-strings
1 parent 33c7218 commit bc5f114

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed

encode-and-decode-strings/dusunax.py

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
'''
2+
# 271. Encode and Decode Strings
3+
4+
## Time and Space Complexity
5+
6+
Use ":" as a separator and also store the length of each string to decode the string correctly.
7+
8+
9+
### encode
10+
11+
```
12+
TC: O(n * k)
13+
SC: O(m)
14+
```
15+
16+
#### TC is O(n * k):
17+
18+
- iterating through the list of strings and appending each string to the result. = O(n * k)
19+
- f-string is O(k)
20+
21+
#### SC is O(m):
22+
- storing the result in a string.
23+
24+
### decode
25+
26+
```
27+
TC: O(m)
28+
SC: O(m)
29+
```
30+
31+
#### TC is O(m):
32+
- iterating over the string until the string length is 0. = O(m)
33+
- do list slicings for extract parts and removing the processed section = each operation takes O(k)
34+
35+
#### SC is O(m):
36+
- storing the result in a list(total length of strings is m) = O(m)
37+
38+
'''
39+
40+
class Solution:
41+
"""
42+
@param: strs: a list of strings
43+
@return: encodes a list of strings to a single string.
44+
"""
45+
def encode(self, strs):
46+
result = ''
47+
for str in strs: # TC: O(n)
48+
result += f"{len(str)}:{str}" # TC: O(k)
49+
return result
50+
51+
"""
52+
@param: str: A string
53+
@return: decodes a single string to a list of strings
54+
"""
55+
def decode(self, str):
56+
result = []
57+
58+
while len(str) > 0: # TC: O(m)
59+
length = int(str[:1]) # TC: O(k)
60+
string = str[2:length+2] # TC: O(k)
61+
str = str[length+2:] # TC: O(k)
62+
63+
result.append(string) # SC: O(m)
64+
65+
return result

0 commit comments

Comments
 (0)