这道题是一道简单题,思路是,统计给定字符串每个字母的个数,放到缓冲数组arr中,然后根据回文串的性质统计最长回文串的长度,代码如下。
代码 class Solution { public: int longestPalindrome(string s) { int arr[52] = {0}; int num = 0; bool ji = false; //判断奇偶 int size = s.length(); for(int i = 0; i < size; i++){ char temp = s[i]; //这个语句块多次用到,这样效率高 if(temp >= 65 && temp <= 90){ arr[temp - 65]++; //统计‘A~Z’的个数,放到arr的0~25位 }else if(temp >= 97 && temp <= 122){ arr[temp - 71]++; //统计‘a~z’的个数,放到arr的26~51位 } } for(int i = 0; i < 52; i++){ int temp = arr[i]; if(temp % 2 == 0){ num += temp; }else{ num = num + temp - 1; ji = true; } } if(ji) num++; return num; } };