Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* for a word to be rearrange to palindrome it will need to have even number of letters on all letters or except one letter
- aabbcc or aabbc can both be rearrange to palindrome.
- make a dictionary storing all the letters, if number of letters are all even or all even except one then return true, else return false.
- */
- func isArrangeToPalindrome(string: String) -> Bool{
- guard !string.isEmpty else {
- return false
- }
- var dictionary : [Character : Int] = [:]
- var alreadyHaveOddLetter = false
- for character in string{
- if dictionary[character] != nil{
- dictionary[character]! += 1
- }else {
- dictionary[character] = 1
- }
- }
- for (_, value) in dictionary{
- if value % 2 == 1 && !alreadyHaveOddLetter{
- alreadyHaveOddLetter.toggle()
- } else if value % 2 == 1 && alreadyHaveOddLetter{
- return false
- }
- }
- return true
- }
- isArrangeToPalindrome(string: "aabbccd") // true
- isArrangeToPalindrome(string: "aaabbcc") //true
- isArrangeToPalindrome(string: "aaabbbccd") //false
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement