给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例1:
输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)
来源:力扣(LeetCode)
回文排列有两种情况:
1)所有的字母都能两两配对,都是偶数;
比如 “abba”,“aabbaa”。
2)只有一个字母的数量是奇数。
比如“aba”,“abcba”,“acbca”。
这两种情况的并集就是: 最多只有一个字母的数量是奇数。
当出现次数为奇数的字母大于1时,那么该字母串不能构成回文排列。
1)先将输入的字母串按顺序排列,从第1个字母开始匹配
2)如果相等,次数加1;
3)否则判断出现次数是否为奇数,为奇数则计算出现奇数的情况加1;
4)重置出现次数为1,并从当前字母重新开始匹配;
5)判断出现奇数的情况次数是否大于1,是则退出,否则重新执行2)~5)直到字母串末尾。
6)判断最后出现的字母的出现次数是否奇数;
步骤6)这里有两种情况:(1