面试题 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 ; }
标签:排列,面试题,ch,return,int,set,01.04,回文 来源: https://www.cnblogs.com/cocobear9/p/12840006.html