給定一個字符串,編寫一個函數判定其是否爲某個迴文串的排列之一。
迴文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。
迴文串不一定是字典當中的單詞。
示例1:
輸入:"tactcoa"
輸出:true(排列有"tacocat"、"atcocta",等等)
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/palindrome-permutation-lcci
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解題
//解題思路:
// 1.將所有字符映射到int數組上,並遞增重複個數;
// 2.統計數組內有單數個數的數量;
// 3.若統計出的數量小於等於1,則滿足迴文的需求;
public static boolean canPermutePalindrome(String s) {
int[] map = new int[256]; // 根據ASCII,所以申請長度爲256的int數組
for (byte a : s.getBytes()) {
map[a]++; // 使用字符-a得到數組上的位置,如果有重複,則遞增
}
int count = 0; // 統計單數個數
for (int i = 0; i < map.length; i++) {
if (map[i] % 2 != 0) {
count++;
}
}
return count <= 1;
}