最少回文串--牛客网(秋招备战专场三模)-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 }

 

posted @ 2017-07-25 21:02  qqky  阅读(526)  评论(4编辑  收藏  举报