Skip to content

Commit a0fccd4

Browse files
solves string compression in python
1 parent 7ab932c commit a0fccd4

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@
117117
| 422 | 🔒 [Valid Word Square](https://leetcode.com/problems/valid-word-square) | Easy | |
118118
| 434 | [Number of Segments in a String](https://leetcode.com/problems/number-of-segments-in-a-string) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NumberOfSegmentsInString.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/number_of_segments_in_a_string.py) |
119119
| 441 | [Arranging Coins](https://leetcode.com/problems/arranging-coins) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/ArrangingCoins.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/arranging_coins.py) |
120-
| 443 | [String Compression](https://leetcode.com/problems/string-compression) | Medium | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/StringCompression.java) |
120+
| 443 | [String Compression](https://leetcode.com/problems/string-compression) | Medium | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/StringCompression.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/string_compression.py) |
121121
| 447 | [Number of Boomerangs](https://leetcode.com/problems/number-of-boomerangs) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/NumberOfBoomerangs.java) |
122122
| 448 | [Find All Numbers Disappeared in an Array](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/FindAllNumbersDisappearedInAnArray.java) |
123123
| 453 | [Minimum Moves to Equal Array Elements](https://leetcode.com/problems/minimum-moves-to-equal-array-elements) | Easy | [![Java](https://img.icons8.com/color/40/000000/java-coffee-cup-logo.png)](src/MinimumMovesToEqualArrayElements.java) [![Python](https://img.icons8.com/color/35/000000/python.png)](python/minimum_moves_to_equal_array_element.py) |

python/string_compression.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from typing import List
2+
from collections import deque
3+
4+
5+
class Solution:
6+
def compress(self, chars: List[str]) -> int:
7+
compressed_strings = deque()
8+
current_char, count,length = chars[0], 0, 0
9+
for character in chars:
10+
if character == current_char:
11+
count += 1
12+
else:
13+
compressed_strings.append((current_char, str(count)))
14+
length += 1 + (len(str(count)) if count > 1 else 0)
15+
current_char = character
16+
count = 1
17+
compressed_strings.append((current_char, str(count)))
18+
length += 1 + (len(str(count)) if count > 1 else 0)
19+
20+
i = 0
21+
for compressed_string in compressed_strings:
22+
character, count = compressed_string
23+
chars[i] = character
24+
if int(count) > 1:
25+
chars[i + 1:i + 1 + len(count)] = count
26+
i += 1 + (len(count) if int(count) > 1 else 0)
27+
return length

0 commit comments

Comments
 (0)