给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例:
输入:"tactcoa" 输出:true(排列有"tacocat"、"atcocta",等等)
参考代码:
package com.gong; import java.util.HashSet; /** * 消消乐思想,要形成回问串,每个字符都是两两出现的,只允许有一个字符是单独的或者没有单独的字符 * 类似玩消消乐一样,两个一样的字符我们就消除 * */ public class HuiWenChuan { public static boolean canPermutePalindrome(String s){ if(s==null||s.length()<1){ return false; } char [] chars=s.toCharArray();//字符串转换成字符数组 HashSet<Character> characters=new HashSet<Character>(); for(Character character : chars){ if(characters.contains(character)){ characters.remove(character); }else { characters.add(character); } } return characters.size()<=1; } public static void main(String[] args) { String str="tactcoa"; boolean result; result=canPermutePalindrome(str); System.out.println(result); } }