java算法題:最長迴文串

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));
    }
}
相關文章
相關標籤/搜索