面试题 01.04. 回文排列

Posted cocobear9

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题 01.04. 回文排列相关的知识,希望对你有一定的参考价值。

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

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

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

示例1:

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


链接:https://leetcode-cn.com/problems/palindrome-permutation-lcci

技术图片

 

方法一:利用HashSet原理,采用消消乐,如果集合里面没有当前的字符就添加,如果有就消除

public static  boolean canPermutePalindrome(String s) {
        if(s==null || s.length()<1){
            return false ;
        }
        Set<Character> set = new HashSet<Character>();
        for(char ch :s.toCharArray()) {
            if(set.contains(ch)) {
                set.remove(ch);
            }else {
                set.add(ch);
            }
        }
        return set.size()<=1 ;
    }

方法二:模拟哈希表,统计每个字符的个数,如果字母的次数是奇数的次数>1那么返回F

public boolean canPermutePalindrome(String s) {
        int oddNum=0;
        int [] arr = new int[128];
        for(int i=0;i<s.length();i++) {
            arr[s.charAt(i)]++;
        }
        for(int i=0;i<arr.length;i++) {
            if(arr[i]%2!=0) oddNum++;
        }
        if(oddNum>1) return false;
        return true ;
    }

 

以上是关于面试题 01.04. 回文排列的主要内容,如果未能解决你的问题,请参考以下文章

面试题 01.04. 回文排列

文巾解题 面试题 01.04. 回文排列

程序员面试金典字符串面试题 01.04 - 回文排列

#yyds干货盘点# LeetCode程序员面试金典:回文排列

最强解析面试题:回文数

2021/5/23 刷题笔记回文排列