Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. /* for a word to be rearrange to palindrome it will need to have even number of letters on all letters or except one letter
  2. aabbcc or aabbc can both be rearrange to palindrome.
  3. 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.
  4. */
  5.  
  6. func isArrangeToPalindrome(string: String) -> Bool{
  7. guard !string.isEmpty else {
  8. return false
  9. }
  10. var dictionary : [Character : Int] = [:]
  11. var alreadyHaveOddLetter = false
  12. for character in string{
  13. if dictionary[character] != nil{
  14. dictionary[character]! += 1
  15. }else {
  16. dictionary[character] = 1
  17. }
  18.  
  19. }
  20. for (_, value) in dictionary{
  21. if value % 2 == 1 && !alreadyHaveOddLetter{
  22. alreadyHaveOddLetter.toggle()
  23. } else if value % 2 == 1 && alreadyHaveOddLetter{
  24. return false
  25. }
  26. }
  27. return true
  28.  
  29. }
  30.  
  31.  
  32. isArrangeToPalindrome(string: "aabbccd") // true
  33. isArrangeToPalindrome(string: "aaabbcc") //true
  34. isArrangeToPalindrome(string: "aaabbbccd") //false
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement