Write a function isPalindromePermutation
that takes in a string and returns true
if any permutation of the string could be a palindrome, and false
otherwise.
A palindrome is a word, phrase, number, or other sequence of characters that reads the same forward and backward. Permutation is the rearrangement of characters.
isPalindromePermutation("tactcoa")
Output:
True
To solve this problem, we can follow these steps:
char_count
.c
in the given string:
c
is already a key in char_count
, increment its count by 1.c
as a key to char_count
with the value 1.odd_count
to 0.char_count
:
odd_count
by 1.odd_count
becomes greater than 1, return False
.True
if the function has not returned False
by this point.In the given example, the given string is "tactcoa".
char_count
= {}, odd_count
= 0
char_count
, so add it with count 1:
char_count
= {"t": 1}, odd_count
= 0char_count
= {"t": 1}, odd_count
= 0
char_count
, so add it with count 1:
char_count
= {"t": 1, "a": 1}, odd_count
= 0char_count
= {"t": 1, "a": 1}, odd_count
= 0
char_count
, so add it with count 1:
char_count
= {"t": 1, "a": 1, "c": 1}, odd_count
= 0char_count
= {"t": 1, "a": 1, "c": 1}, odd_count
= 0
char_count
with count 1, so increment its count by 1:
char_count
= {"t": 2, "a": 1, "c": 1}, odd_count
= 0char_count
= {"t": 2, "a": 1, "c": 1}, odd_count
= 0
char_count
with count 1, so increment its count by 1:
char_count
= {"t": 2, "a": 1, "c": 2}, odd_count
= 0char_count
= {"t": 2, "a": 1, "c": 2}, odd_count
= 0
char_count
, so add it with count 1:
char_count
= {"t": 2, "a": 1, "c": 2, "o": 1}, odd_count
= 0char_count
= {"t": 2, "a": 1, "c": 2, "o": 1}, odd_count
= 0
char_count
with count 1, so increment its count by 1:
char_count
= {"t": 2, "a": 2, "c": 2, "o": 1}, odd_count
= 0At this point, we have iterated through all the characters in the input string.
Since there are no more characters remaining in the string, we can conclude that any permutation of the given string "tactcoa" can be a palindrome. Therefore, the function should return True
.