最少回文串--牛客网(秋招备战专场三模)-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 }
时间: 2024-12-17 16:55:17

最少回文串--牛客网(秋招备战专场三模)-C++方向的相关文章

偶串--牛客网(秋招备战专场三模)-C++方向

题目描述:由两个完全一样的字符串组成的字符串称之为偶串,输入一个字符串,从末尾去掉若干个字符,还能构成偶串,问构成偶串的最大长度 解题思路:本题偶串,字符个数肯定为偶数个,从末尾开始删除,每次也必须删除偶数个才能保证可能为偶串,因此删除2 4 6 等等定义start为起始位置,mid为偶串中的右部分串的起始点,每次从末尾去掉2个,然后更新mid,d(删除个数),然后判断是否为偶串,是则结束,输出s.size()-d,不是,则继续查找,直到结束 1 #include <iostream> 2 #

牛客网秋招模拟笔试第二场(选择题)

1.计数排序算法(需要两个辅助数组存放排序结果的B[1...n],提供临时存储区的C[0...k]),输入数组A[1...n] 辅助数组C的长度,输入数组的最大数就是辅助数组的长度 计数排序是一种线性排序算法,不用进行比较.基本思想是对于每个元素x,找出比x小的数的个数,从而确定x在排好序的数组中的位置. 图中,数组A是待排序的数组,C是用来临时存放信息的数组,B是最终排好序的数组.对于A中的每一个元素,我们将其元素作为C数组的下标.直白的说,如a中,C[0]=2表示A中的元素为0的有两个,C[

动态规划——H 最少回文串

We say a sequence of characters is a palindrome if it is the same written forwards and backwards. For example, ‘racecar’ is a palindrome, but ‘fastcar’ is not. A partition of a sequence of characters is a list of one or more disjoint non-empty groups

LeetCode 第125题 验证回文串

(一)题目描述 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, a plan, a canal: Panama" 输出: true 示例 2: 输入: "race a car" 输出: false (二)算法思路 1 先将字符串转换成字符数组 用到的函数 toCharArray() 2 从两端开始判断每一个字符是否为字母或数字,虽然题目说的只考虑字

牛客网在线编程:统计回文数

题目描述: "回文串"是一个正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B.现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串.你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串.如果字符串B插入的位置不同就考虑为不一样的办法.例如:A = "aba",B = "b&

网易2017秋招编程题集合-牛客网

网易2017秋招编程题集合-牛客网 链接:https://www.nowcoder.com/questionTerminal/0147cbd790724bc9ae0b779aaf7c5b50来源:牛客网 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列. 现在给出一个数字序列,允许使用一

NYOJ 1023 还是回文(DP,花最少费用形成回文串)

1 /* 2 题意:给出一串字符(全部是小写字母),添加或删除一个字符,都会产生一定的花费. 3 那么,将字符串变成回文串的最小花费是多少呢? 4 5 思路:如果一个字符串增加一个字符 x可以形成一个回文串,那么从这个字符串中删除这个字符 x 6 同样也能形成回文串! 7 所以我们只记录删除,和增加这个字符 x 的最小的费用就好了!->转变成添加多少个字符形成回文串费用最少! 8 9 str[i]!=str[k] 10 dp[i][j]=min(dp[i][j-1]+cost[str[k]-'a

好未来2017秋招笔试真题二 --牛客网

好未来2017秋招笔试真题二 --牛客网 链接:https://www.nowcoder.com/questionTerminal/ee5de2e7c45a46a090c1ced2fdc62355来源:牛客网 将一句话的单词进行倒置,标点不倒置.比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100 输出描述: 依次输出倒置之后的字符串,以空格分割 输入例子: I

网易2017秋招编程题集合_以下代码全部来自牛客网

如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列.例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是回文序列, {1, 2, 2}, {15, 78, 87, 51} ,{112, 2, 11} 不是回文序列.现在给出一个数字序列,允许使用一种转换操作:选择任意两个相邻的数,然后从序列移除这两个数,并用这两个数字的和插入到这两个数之前的位置(只插入一个和).现在对于所给序列要求出最少需要多少次操作可以将其变成回文序列. 链接:https://ww