LeetCode: 給定一個包含大寫字母和小寫字母的字符串,找到經過這些字母構形成的最長的迴文串。在構造過程當中,請注意區分大小寫。好比"Aa"不能當作一個迴文字符串。注 意:假設字符串的長度不會超過 1010。數組
思路:利用hashset,遍歷字符串數組,判斷字符是否在hashset中,若是在則加2,並在hashset中移除改字符,反之則放入hashset中
,最後判斷count是否大於字符串長度。code
代碼實現:rem
/** * @author:eason * @desc:最長迴文串(「迴文串」是一個正讀和反讀都同樣的字符串,好比「level」或者「noon」等等就是迴文串。) * @思路:利用hashset,遍歷字符串數組,判斷字符是否在hashset中,若是在則加2,並在hashset中移除改字符,反之則放入hashset中 * ,最後判斷count是否大於字符串長度 */ public class LongestPalindromic { public int getLonestLength(String s){ int count = 0; char[] chars = s.toCharArray(); HashSet set = new HashSet(); for(int i = 0;i < chars.length; i++){ char b = chars[i]; if(set.contains(b)){ count += 2; set.remove(b); }else{ set.add(b); } } if(count < s.length()){ count ++; } return count; } public static void main(String[] args) { String s = "assdsdgggggaa"; LongestPalindromic longestPalindromic = new LongestPalindromic(); System.out.println(longestPalindromic.getLonestLength(s)); } }