6.回文排列-力扣

148 阅读1分钟

题目
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。

示例1:

输入:"tactcoa"
输出:true(排列有"tacocat""atcocta",等等)
var dic :[Character : Int] = [:]
    for char in s {
        if dic[char] == nil {
            dic[char] = 1
        }else{
            dic[char]! += 1
        }
    }   
    var count = 0
    for math in dic.values {
        if math % 2 != 0 {
            count += 1
        }
    }    
    return count > 1 ? false : true
    
    //集合的方式
    var set :Set<String> = []
    for char in s {
        if set.contains(char.description) {
            set.remove(char.description)
        }else{
            set.insert(char.description)
        }
    }

    return set.count <= 1


总结:

  • 根据题目描述,字符串中有0个或者1个字符出现的次数为奇数都可以组成回文串
  • 所以可以用字典的方式来解题,当字典的value值的次数大于1时来判断
  • 当然也可以根据set集合的方式来解题