题目地址:https://leetcode-cn.com/problems/palindrome-permutation/

题目描述

Given a string, determine if a permutation of the string could form a palindrome.

Example 1:

Input: "code"
Output: false

Example 2:

Input: "aab"
Output: true

Example 3:

Input: "carerac"
Output: true

题目大意

给定一个字符串,判断该字符串中是否可以通过重新排列组合,形成一个回文字符串。

解题方法

字典

回文串中,左右必须对称,因此出现次数为奇数的字符最多只有一个。

使用一个字典,保存每个字符出现的次数。如果出现次数为奇数个的字符<=1,那么可以构成回文串。

C++代码如下:

class Solution {
public:
    bool canPermutePalindrome(string s) {
        unordered_map<char, int> m_;
        for (char c : s) {
            m_[c]++;
        }
        int odd_count = 0;
        for (auto& it : m_) {
            if (it.second & 1)
                odd_count++;
        }
        return odd_count <= 1;
    }
};

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

2022

DDKK.COM 弟弟快看-教程,程序员编程资料站,版权归原作者所有

本文经作者:负雪明烛 授权发布,任何组织或个人未经作者授权不得转发