#2423
Remove Letter To Equalize Frequency
EasyHash TableStringCountingHash MapArray
Approaches
Brute ForceOptimal
Complexity Comparison
| Brute Force | Optimal Solution★ | |
|---|---|---|
| Time | O(n²) | O(n) |
| Space | O(1) | O(n) |
💡
Intuition
Time O(n)Space O(n)
The optimal approach involves counting the frequency of each character and analyzing the frequency counts. By checking specific conditions on the frequency counts, we can determine if removing one character can equalize the frequencies efficiently.
⚙️
Algorithm
4 steps- 1Step 1: Count the frequency of each character in the string.
- 2Step 2: Count how many times each frequency occurs.
- 3Step 3: Analyze the frequency counts to check if we can equalize them by removing one character.
- 4Step 4: If there are two distinct frequencies, check if one can be reduced to match the other by removing one character.
solution.py17 lines
1# Full working Python code
2
3def equalFrequency(word):
4 freq = {}
5 for char in word:
6 freq[char] = freq.get(char, 0) + 1
7 count = {}
8 for f in freq.values():
9 count[f] = count.get(f, 0) + 1
10 if len(count) == 1:
11 return True
12 if len(count) == 2:
13 keys = list(count.keys())
14 if (count[keys[0]] == 1 and (keys[0] - 1 == keys[1] or keys[0] == 1)) or
15 (count[keys[1]] == 1 and (keys[1] - 1 == keys[0] or keys[1] == 1))):
16 return True
17 return Falseℹ
Complexity note: The time complexity is O(n) because we traverse the string to count frequencies and then analyze the frequency counts. The space complexity is O(n) due to the storage of frequency counts in a hashmap.
- 1Understanding character frequency is crucial to solving this problem.
- 2Recognizing the conditions under which frequencies can be equalized helps in optimizing the solution.
Solutions and explanations are original Tejav content. Problem titles © LeetCode — use the LeetCode button above for the full problem statement.