最少回文串--牛客网(秋招备战专场三模)-C++方向
题目描述:一个字符串从左向右和从右向左读都完全一样则是回文串,给定一个字符串,问该字符串中的字符所能组成的最少的回文串的个数为多少
解题思路:如果一个字符出现的次数为偶数,则必能组成回文串,如果一个字符出现奇数次,只能自己组成回文串,题目中问最少的回文串数目,即求出现次数为奇数次的字符个数即可,定义a存储每个字符出现的次数,统计出现奇数次的字符的个数,即为输出
1 #include <iostream> 2 #include <string> 3 using namespace std; 4 5 int main() 6 { 7 string s; 8 cin>>s; 9 int n = s.size(); 10 int count = 0; 11 int a[256] = {0}; 12 for(int i=0;i<n;i++) 13 { 14 a[s[i]]++; 15 } 16 for(int i=0;i<256;i++) 17 { 18 if(a[i]%2!=0) 19 { 20 count++; 21 } 22 } 23 cout<<count<<endl; 24 return 0; 25 }