标签:
Just check there are no more than 2 characters that appear an odd number of times in the string.
My C++ code using an array as a hash map is as follows.
1 class Solution { 2 public: 3 bool canPermutePalindrome(string s) { 4 int odd = 0, counts[256] = {0}; 5 for (char c : s) 6 odd += ++counts[c] & 1 ? 1 : -1; 7 return odd <= 1; 8 } 9 };
BTW, Stefan has posted many nice solutions here, including the following one that uses bitset.
1 class Solution { 2 public: 3 bool canPermutePalindrome(string s) { 4 bitset<256> b; 5 for (char c : s) b.flip(c); 6 return b.count() < 2; 7 } 8 };
[LeetCode] Palindrome Permutation
标签:
原文地址:http://www.cnblogs.com/jcliBlogger/p/4748554.html