Section titled Problem
Problem
Given a string, find out if its characters can be rearranged to form a palindrome.
Example
For inputString = “aabb”, the output should be solution(inputString) = true.
We can rearrange “aabb” to make “abba”, which is a palindrome.
Section titled Solution
Solution
The condition of string to become palindrome is all character count must be even and only allow maximum 1 odd character. For example:
aabb
->abba
orbaab
a
= 2b
= 2aaabb
->ababa
orbaaab
a
= 3b
= 2Using hash byte of int to store character frequency
Loop
inputString
to counter total char
func solution(inputString string) bool {
charCount := make(map[byte]int)
for i := range inputString {
charCount[inputString[i]]++
}
oddCount := 0
for _, count := range charCount {
if count%2 == 1 {
oddCount++
}
}
return oddCount <= 1
}
Init total odd frequency as zero.
Iterate hash charCount
to find out how many odd frequency.
Return true
if odd frequency is less than equals 0