1. 程式人生 > >刷題感悟 - Longest Palindrome

刷題感悟 - Longest Palindrome

sts length move side color new for let else

最近死磕較高難度的題目 深感自己的基本數據結構掌握不夠熟練 因此 刷題較慢了些

刷了一道簡單的題目漲漲自信

題目:Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters.

This is case sensitive, for example "Aa" is not considered a palindrome here.

思路 :這題要求對稱數 的長度 ,如果采用二維數組來計數在代碼上和之間復雜度上麻煩了 因此用map的形式來存儲char 遍歷一遍 相同的刪掉並計數 ,

要考慮特殊情況:剛好長度為字符串長度

Map在比較過程中 能有效的節約時間

代碼如下

    public int longestPalindrome(String s) {
        // Write your code here
        if(s.length()==0)return 0;
        char[] chs = s.toCharArray();
        int count=0;
        Map<Character,String > keys=new HashMap<>();
        for(char ch:chs){
            
if(keys.containsKey(ch)){ count++; keys.remove(ch); }else{ keys.put(ch,null); } }if(s.length()==count*2)return count*2; return 2*count+1; }

刷題感悟 - Longest Palindrome