面试题 01.04:回文排列

简介: 面试题 01.04:回文排列

题目

题目链接

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

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

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

示例1:

输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)

解题

方法一:哈希表

由于要可以排序成回文串,那么最多只能有一个字符的数量为奇数(放在最中间),其他均要为偶数

假设有n个字符,以下两种情况是可行的

  1. n个偶数
  2. n-1个偶数,1个奇数

因此只要判断 字符数量为奇数出现超过1次的,就不能排列为回文串。

class Solution {
public:
    bool canPermutePalindrome(string s) {
        unordered_map<char,int> map;
        for(char c:s) map[c]++;
        int oddNum=0;
        for(pair<char,int> kv:map){
            if(kv.second%2==1){
                oddNum++;
                if(oddNum>1) return false;
            }
        }
        return true;
    }
};
相关文章
|
8月前
|
程序员
【Leetcode】面试题 01.02. 判定是否互为字符重排、面试题 01.04. 回文排列
目录 面试题 01.02. 判定是否互为字符重排 面试题 01.04. 回文排列
41 0
算法面试真题详解:下一个排列
算法面试真题详解:下一个排列
算法面试真题详解:下一个排列
|
机器学习/深度学习 存储 算法
大厂面试真题详解:带重复元素的排列
大厂面试真题详解:带重复元素的排列
大厂面试真题详解:带重复元素的排列
|
1天前
|
Java
Java中的面试常见问题解析
Java中的面试常见问题解析
|
5天前
|
Java Android开发 Kotlin
Android面试题:App性能优化之Java和Kotlin常见的数据结构
Java数据结构摘要:ArrayList基于数组,适合查找和修改;LinkedList适合插入删除;HashMap1.8后用数组+链表/红黑树,初始化时预估容量可避免扩容。SparseArray优化查找,ArrayMap减少冲突。 Kotlin优化摘要:Kotlin的List用`listOf/mutableListOf`,Map用`mapOf/mutableMapOf`,支持操作符重载和扩展函数。序列提供懒加载,解构用于遍历Map,扩展函数默认参数增强灵活性。
14 0
|
6天前
|
设计模式 SQL JavaScript
java面试宝典全套含答案
java面试宝典全套含答案
|
6天前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
|
6天前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018