最長の回文文字列(シンプル):409 LeetCodeの質問の19日目3月パンチカードアクティビティ

最長の回文文字列(シンプル):409 LeetCodeの質問の19日目3月パンチカードアクティビティ

  • タイトル:文字回文配列によって最長のを見つけるために、設定された所定の文字列を含んで、文字の大文字と小文字。建設プロセスでは、大文字と小文字を区別しますのでご注意ください。以下のような「Aaが」回文文字列として使用することはできません。注:文字列の長さを超える1010ではないと仮定。
    ここに画像を挿入説明
  • 問題解決のアイデア:各文字が現れるの格納に使用するのはHashMapの数。
class Solution {
    public int longestPalindrome(String s) {
        HashMap<String,Integer> map = new HashMap<>();
        int len = s.length();
        if(len==0) return 0;
        if(len==1) return 1;
        for(int i=0;i<len;i++){
            String ss = s.charAt(i) + "";
            if(map.containsKey(ss)){
                map.put(ss,map.get(ss)+1);
            }else{
                map.put(ss,1);
            }
        }
        int max = 0;
        for(Map.Entry<String,Integer> entry:map.entrySet()){
            if(entry.getValue()%2!=0){
                len--;
                max = 1;
            }
        }
        return max==1?len+1:len;
    }
}

ここに画像を挿入説明

  • 問題解決のアプローチ:文字の出現数とストレージ・アレイ。
class Solution {
    public int longestPalindrome(String s) {
        int[] count = new int[128];
        for (char c: s.toCharArray())
            count[c]++;

        int ans = 0;
        for (int v: count) {
            ans += v / 2 * 2;
            if (v % 2 == 1 && ans % 2 == 0)
                ans++;
        }
        return ans;
    }
}

ここに画像を挿入説明

公開された100元の記事 ウォン称賛12 ビュー2349

おすすめ

転載: blog.csdn.net/new_whiter/article/details/104960423