LeetCode: 給定一個包含大寫字母和小寫字母的字符串,找到通過這些字母構造成的最長的回文串。在構造過程中,請注意區分大小寫。比如"Aa"不能當做一個回文字符串。注 意:假設字符串的長度不會超過 1010。
思路:利用hashset,遍歷字符串數組,判斷字符是否在hashset中,如果在則加2,并在hashset中移除改字符,反之則放入hashset中
,最后判斷count是否大于字符串長度。
代碼實現:
/**
* @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));
}
}