力扣-回文串

今天碰到了一个关于回文串的问题:判断一个字符串重新排列后能否形成一个回文串。

个人初始思路:统计每种字符在字符串中的出现次数,最后如果次数为奇数的多于一个,则false。但是用于存储字符串出现次数的数组不能用s.length来构造,因为是变量。

解答思路:通过使用unordered_map<char,int>构造一个map来存储,然后判断。

class Solution {
public:
    bool canPermutePalindrome(string s) {
        unordered_map<char,int> map;
        for(char c:s){
            map[c]++;
        }
        int count=0;
        for(auto &i:map){
            if(i.second%2==1)
            {
                count++;
            }
            if(count==2)
            {
                return false;
            }
        }
        return true;
        
    }
};

补充:也可以先sort一下,再判断。(时间复杂度会提高)

posted @ 2021-03-03 09:43  徐不二  阅读(74)  评论(0)    收藏  举报