Super-palindrome【字符串+思维】
Super-palindrome
时间限制: 1 Sec 内存限制: 128 MB
提交: 595 解决: 231
[提交] [状态] [命题人:admin]
题目描述
You are given a string that is consisted of lowercase English alphabet. You are supposed to change it into a super-palindrome string in minimum steps. You can change one character in string to another letter per step.
A string is called a super-palindrome string if all its substrings with an odd length are palindrome strings. That is, for a string s, if its substring si…j satisfies j - i + 1 is odd then si+k = sj-k for k = 0,1,…,j-i+1.
输入
The fi rst line contains an integer T (1≤T≤100) representing the number of test cases.
For each test case, the only line contains a string, which consists of only lowercase letters. It is guaranteed that the length of string satisfies 1≤|s|≤100.
输出
For each test case, print one line with an integer refers to the minimum steps to take.
样例输入
复制样例数据
3
ncncn
aaaaba
aaaabb
样例输出
0
1
2
提示
For second test case aaaaba, just change letter b to a in one step.
题目大意:先输入一个数n,以下n行每行输入一个字符串,要求其每一个字串均是回文串,问最少需改变几个字母才能达到这种效果。
解题思路:因为需要每个字串均是回文串,所以可知最终改得的回文串一定是两个字母交替的形式,例如ababab,所以只需要找到实现这种情况的最小操作数即可,即只需要记录一下在奇数位上出现最多的字母出现的次数,把其他奇数位的改为此字母,在偶数位上同理。
代码:
#include <cstdio>
#include <iostream>
#include <algorithm>
#incde <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
map<char,int> m1,m2;
int main()
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);ios::sync_with_stdio(0),cin.tie(0);int n;cin>>n;string s;while(n--) {cin>>s;m1.clear();m2.clear();int ma1=0,ma2=0;for(int i=0;i<s.size();i++) {if(i%2==0) {m1[s[i]]++;if(m1[s[i]]>ma1) {ma1=m1[s[i]];}}else {m2[s[i]]++;if(m2[s[i]]>ma2) {ma2=m2[s[i]];}}}cout<<s.size()-ma1-ma2<<endl;}return 0;
}
Super-palindrome【字符串+思维】相关推荐
- POJ 1159 Palindrome(字符串变回文:LCS)
POJ 1159 Palindrome(字符串变回文:LCS) http://poj.org/problem? id=1159 题意: 给你一个字符串, 问你做少须要在该字符串中插入几个字符能是的它变 ...
- Codeforces Round #636 (Div. 3) D. Constant Palindrome Sum 思维 + 差分
传送门 文章目录 题意: 思路: 题意: 思路: 首先有一个显然的性质就是每组操作最多不会超过两次. 很容易想到一个很暴力的思路,就是枚举x∈[1,2∗k]x \in [1,2*k]x∈[1,2∗k] ...
- COW(暴力枚举) + 玄神的字符串(思维题) + Duplicate Strings(字符串思维题)
'只要坚持就会成功--2022.1.22' 1.COW,这道题的大概意思就是求出一个字符串中一共有多少个COW,不要求连续. 思路: 暴力枚举,枚举每一个包含O,看这个O和前后的C,W结合能组成多少个 ...
- CodeForces - 1343D Constant Palindrome Sum(思维+差分数组)
题目链接:点击查看 题目大意:给出 n 个数,保证 n 是偶数,且每个数的范围都在 [ 1 , k ] 之间,现在问我们至少需要给多少个数重新赋值,使得可以满足条件: 所有的数的值域都在 [ 1 , ...
- c语言字符串文库总结,C语言字符串.ppt
C语言字符串.ppt ACM程序设计,福州大学至诚学院 冯新,第四讲,字符串处理,常用函数介绍,复制,char* strcpy char *s1, const char *s2; 将字符串s2复制到s ...
- 2.1.3 字符与字符串
目录 思维导图 ASCLL码 汉字 字符串 思维导图 ASCLL码 汉字 字符串
- NSString / NSMutableString 字符串处理,常用代码 (实例)
Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重 ...
- C语言字符型PPT,《C语言字符串》PPT课件.ppt
<<C语言字符串>PPT课件.ppt>由会员分享,可在线阅读,更多相关<<C语言字符串>PPT课件.ppt(30页珍藏版)>请在装配图网上搜索. 1.A ...
- 王道计算机考研 计算机组成原理 第二章、数据的表示和运算
1.进位计数制 各种进制的常见书写方式 十进制 转为 任意进制 真值和机器数 思维导图 2.BCD码(大纲已删) 3.字符与字符串 ASCII码 汉字的表示和编码 字符串 思维导图 4.奇偶校验码(计 ...
最新文章
- 让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
- 用Python分析了1w四六级数据,教你如何通过四六级!
- IOS开发 ARC forbids explicit message send of 'autorelease'错误解决办法
- 利用OpenCV实现图像拼接的代码
- 将HTML5 Canvas的内容保存为图片
- linux中普通用户用友所有权限,linux文件的特殊权限
- 在线SVG转换,支持SVG to PNG、SVG to JPEG、SVG to WEBP 图片转换操作-toolfk程序员在线工具网
- elasticsearch的父子_ElasticSearch 学习记录之父子结构的查询
- “刀片嗓”“水泥鼻”“咳出肺”可以这样缓解!
- vue + iview + less 定制主题色
- 安卓android记单词软件
- uniapp textarea编辑保留空格换行
- 一、编程基础之计算机基础知识
- ip地址转换成16进制long
- javascript中的:DOM对象
- C++围棋小游戏1.1
- Android 从代码中打开淘宝和亚马逊、facebook、Message
- Macos Catalina 10.15.4 (19E287) 更新后外接显示器显示BUG
- 我的世界java版盔甲架_我的世界:知道了这些盔甲架的用法,你就是今年最靓的仔!...
- Linux中IPsec的实现--(实例)
热门文章
- Python map 函数 -Python零基础入门教程
- ret2dlresolve归纳
- Java自动化获取页面主题_基于Selenium2+Java的UI自动化(4) - WebDriver API简单介绍
- 配置文件存int类型_Redis详解(五)------ redis的五大数据类型实现原理
- java se入门_java SE 入门之运算符(第三篇)
- mariadb mysql表_mysql/mariadb学习记录——创建删除数据库、表的基本命令
- anylogic中如何构建复杂网络_如何对复杂网络建模所需要的数据进行预处理
- edges2shoes数据集下载_edges2cats
- redis java应用_redis在JAVA的简单应用
- Eclipse 版本升级:如何不卸载旧版本 Eclipse 实现在线升级到最新版本?