【LeetCode】迴文排列

給定一個字符串,編寫一個函數判定其是否爲某個迴文串的排列之一。

迴文串是指正反兩個方向都一樣的單詞或短語。排列是指字母的重新排列。
迴文串不一定是字典當中的單詞。

示例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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章