Skip to content

Commit b7c5a5b

Browse files
authored
Merge pull request #577 from sir-gon/develop
[REFACTOR] [Hacker Rank] Interview Preparation Kit: String Manipulati…
2 parents 6528ae3 + 0e27323 commit b7c5a5b

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

src/hackerrank/interview_preparation_kit/string_manipulation/sherlock_and_valid_string.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,21 @@ def is_valid(word: str) -> bool:
1515
string_map[letter] = 1 + string_map.get(letter, 0)
1616

1717
frequencies = Counter(string_map.values())
18-
frequencies = dict(sorted(frequencies.items(), key=lambda x: x[1]))
1918
frequencies_size = len(frequencies)
2019

2120
if frequencies_size == 1:
2221
return True
2322

2423
if frequencies_size == 2:
24+
frequencies = dict(sorted(frequencies.items(), key=lambda x: x[1]))
2525
frequencies_list = list(frequencies.keys())
2626

27-
if frequencies[frequencies_list[0]] == 1 \
28-
and (
29-
frequencies_list[0] - 1 == 0
30-
or frequencies_list[0] - 1 == frequencies_list[1]):
27+
minor_freq = frequencies_list[0]
28+
major_freq = frequencies_list[1]
29+
tolerance = 1
30+
31+
if frequencies[minor_freq] == tolerance \
32+
and tolerance in {minor_freq, (minor_freq - major_freq)}:
3133
return True
3234

3335
return False

0 commit comments

Comments
 (0)