栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

面试题 01.04. 回文排列

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

面试题 01.04. 回文排列

面试题 01.04. 回文排列
  • 一、题目描述
  • 二、思路详解
  • 三、参考代码
    • 【1.0】字典解法
    • 【2.0】集合解法
  • 四、题目来源

一、题目描述

给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 回文串不一定是字典当中的单词。

二、思路详解

回文字符串的特征:
1、所有出现的字符要么都是偶数个数;
2、所有出现的字符要么只有一个奇数个数,其他都是偶数
抓住奇数这个特征;用字典来统计单个元素出现的次数;

三、参考代码 【1.0】字典解法
class Solution {
    public boolean canPermutePalindrome(String s) 
    {
        //回文字符串的特征:1、所有出现的字符都是偶数个数;2、所有出现的字符只有一个奇数个数,其他都是偶数
        Byte flag = 0;//奇数标志位
        HashMapdic = new HashMap<>();    //字典

        // 字典赋值
        for(int i=0; i1)  
                    return false;
            }
        }
        return true;
        
        }

    }

【2.0】集合解法

每个字符出现的次数为偶数, 或者有且只有一个字符出现的次数为奇数时, 是回文的排列; 否则不是.

class Solution {
    public boolean canPermutePalindrome(String s) {
        Set set = new HashSet<>();
        for (char c : s.toCharArray()) {
            if (!set.add(c)) {
                set.remove(c);
            }
        }
        return set.size() <= 1;
    }
}

//来源:
//作者:jiangzs
//链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci/solution/li-yong-ha-xi-biao-by-jiangzs/
//源:力扣(LeetCode)
//著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
四、题目来源

面试题 01.04. 回文排列

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/510801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号