题目:
回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。
回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。
回文串不一定是字典当中的单词。
示例1:
输入:"tactcoa"
输出:true(排列有"tacocat"、"atcocta",等等)
思路:
最多有一个字符只出现一次,其他字符均需要出现两次。否则就饭后false。
先排序,比较吗? 使用快排的方式。
1.代码如下CanPermutePalindrome .java:
package com.yuhl.right.leetcode;
import com.yuhl.Main;
import java.util.Arrays;
public class CanPermutePalindrome {
public static void main(String[] args) {
String s = "tacocat";
boolean b = canPermutePalindrome(s);
System.out.println(b);
}
public static boolean canPermutePalindrome(String s) {
char[] arr = s.toCharArray();
Arrays.sort(arr);
int dcount = 0;
for(int i=0; i<arr.length; i++){
if(i == arr.length-1) {
dcount ++;
break;
}
if(arr[i] == arr[i+1]){
i++;
} else {
dcount ++;
}
}
return 0 == dcount || 1==dcount;
}
}
2.执行结果:
"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"
true