Skip to content

Commit 90d768e

Browse files
committed
Optimize count_letters using precomputed character set for O(n) performance
1 parent c10a129 commit 90d768e

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

Sprint-2/improve_with_precomputing/count_letters/count_letters.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@ def count_letters(s: str) -> int:
22
"""
33
count_letters returns the number of letters which only occur in upper case in the passed string.
44
"""
5-
only_upper = set()
6-
for letter in s:
7-
if is_upper_case(letter):
8-
if letter.lower() not in s:
9-
only_upper.add(letter)
10-
return len(only_upper)
5+
chars = set(s) # precompute all characters once
116

7+
only_upper = set()
8+
for letter in chars: # iterate unique characters only
9+
if letter.isupper() and letter.lower() not in chars:
10+
only_upper.add(letter)
1211

13-
def is_upper_case(letter: str) -> bool:
14-
return letter == letter.upper()
12+
return len(only_upper)

0 commit comments

Comments
 (0)