【字符串】面试题 01.04. 回文排列

题目:

 

 

 

解答:

思路:

回文数是对称的。

能构成回文数的条件是:一个字符串里面最多只有一个字符,它的数量是奇数,超过一个字符的数量为奇数就不可能构成回文串。

即:两个及以上的字符出现次数为奇,就不是回文串。

 1 class Solution {
 2 public:
 3     bool canPermutePalindrome(string s) 
 4     {
 5         std::map<char, int> mp;
 6         for ( int i = 0; i < s.size(); i++)
 7         {
 8             mp[s[i]]++;
 9         }
10 
11         int odd = 0;
12         for (int i = 0; i < mp.size(); i++)
13         {
14             if (mp[i] % 2 == 1)
15             {
16                 odd += 1;
17             }
18         }
19 
20         if (odd >= 2)
21         {
22             return false;
23         }
24 
25         return true;
26 
27     }
28 };

 

posted @ 2020-05-04 09:49  梦醒潇湘  阅读(179)  评论(0)    收藏  举报