def is_isogram(phrase):
scrubbed = phrase.replace('-', '').replace(' ', '').lower()
return len(scrubbed) == len(set(scrubbed))
For this approach, replace()
is called a couple times to scrub the input phrase string.
Thw two replace()
calls are chained, so the output of the first replace()
is the input for the next replace()
.
The output of the last replace()
is the input for lower()
.
All of the letters are lowercased so that letters of different cases will become the same letter for comparison purposes,
since A
and a
are considered to be the same letter.
When the replacing and lowercasing is done, the scrubbed variable will be a string having no hyphens or spaces,
and with all alphabetic letters lowercased.
- A
set
is constructed from the scrubbed string and itslen
is compared with thelen
of the the scrubbed string. Since aset
holds only unique values, the phrase will be an isogram if its number of unique letters is the same as its total number of letters. The function returns whether the number of unique letters equals the total number of letters. - For
Alpha
it would returnFalse
, becausea
is considered to repeatA
, so the number of unique letters inAlpha
is4
, and the total number of letters inAlpha
is5
. - For
Bravo
it would returnTrue
, since the number of unique letters inBravo
is5
, and the total number of letters inBravo
is5
.