刷題感悟 - Longest Palindrome
阿新 • • 發佈:2017-08-20
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