题目:
给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串。
在构造过程中,请注意区分大小写。比如 “Aa” 不能当做一个回文字符串。
注意:
假设字符串的长度不会超过 1010。
解析:
这道题很多种解法,但是我们采用哈希表的方式来解。
我们先思考:
具体思路为:
代码:
class Solution {
public int longestPalindrome(String s) {
int[] char_map=new int[128];
int max_len=0;
int flag=0;
for(int i=0;i<s.length();i++){
char_map[s.charAt(i)]++;
}
for(int i=0;i<128;i++){
if(char_map[i]%2==0){
max_len+=char_map[i];
}else{
max_len+=char_map[i]-1;
flag=1;
}
}
return max_len+flag;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindrome
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。