面试题 01.04. 回文排列

面试题 01.04. 回文排列

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。

回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。

回文串不一定是字典当中的单词。

示例:

输入:tact coa
输出:True(排列有"taco cat"、"atco cta",等等)

思路

用哈希表,如果字符出现奇数次的个数<=1, 则可以形成回文。(刚看到题目第一思路居然是全排列,然后回文判断,但必定超时,需要优化。测试用例字母大小写不可以变换)

class Solution {
public:
    bool canPermutePalindrome(string s) {
        bool hash[128];
        fill(hash, hash+128,false);//初始化为false
        for(int i=0;i

 

你可能感兴趣的:(面试题 01.04. 回文排列)