题目
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。
示例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集合的方式来解题