diff --git a/src/my_project/interviews/amazon_high_frequency_23/round_7/optimal_partition_string.py b/src/my_project/interviews/amazon_high_frequency_23/round_7/optimal_partition_string.py new file mode 100644 index 00000000..3f2117d6 --- /dev/null +++ b/src/my_project/interviews/amazon_high_frequency_23/round_7/optimal_partition_string.py @@ -0,0 +1,18 @@ +class Solution: + def partitionString(self, s: str) -> int: + + # 1-based positions: 0 means "character never seen" + last_pos = [0] * 26 + partitions = 0 + partition_start = 0 + + for i in range(len(s)): + + # last occurrence falls inside the open partition -> must cut + if last_pos[ord(s[i]) - ord('a')] >= partition_start: + partitions += 1 + partition_start = i + 1 + + last_pos[ord(s[i]) - ord('a')] = i + 1 + + return partitions \ No newline at end of file