> For the complete documentation index, see [llms.txt](https://joshualbarb.gitbook.io/leetcode-problems/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://joshualbarb.gitbook.io/leetcode-problems/strings/string-simulation/palindrome-permutation.md).

# Palindrome Permutation

## Problem

Given a string, determine if a permutation of the string could form a palindrome.

![](/files/-MR11_KUD2Rf8n83xc_i)

### Thought Process

* All letters must occur in pairs with the exception of odd length strings which can at most have one letter that is not a pair

## Solution

```
class Solution:
    def canPermutePalindrome(self, s: str) -> bool:
        ss = set()
        
        for letter in s:
            if letter not in ss:
                ss.add(letter)
            else:
                ss.remove(letter)
        if len(ss) > 1:
            return False
        return True
```

## Time Complexity

* **Time:** O(n)
* **Space:** O(1) because hash set is bounded by 26 characters
