【ZZULIOJ】 2170 DML和回文
来源:互联网 发布:淘宝女童秋装 编辑:程序博客网 时间:2024/05/16 15:07
Description
DML有个只有小写字母的字符串。他想从字符串中更改一个字符,以便让这个字符串成为回文串。
回文串是一个字符串,从前往后读和从后往前读都相同,例如串 “z” “aaa” “aba” “abccba” 是回文串,但串 “acm” “ab”不是回文串。
Input
输入一行字符串s(1<=|s|<=15)
输入到文件尾结束。
Output
如果DML可以正好更改一个字符,使得结果字符串为回文串,则输出“YES”, 否则 输出“NO”。
Sample Input
abccaa
abbcca
abcda
Sample Output
YES
NO
YES
HINT
不能变换成和之前的字符一样,题目没说,wa了好多次...
AC代码:
#include<cstdio>#include<cstring>int main(){char s[20],a[10],b[10];while(scanf("%s",s)!=EOF){int len=strlen(s);if(len==1) //一个字符变换后还是回文串 {printf("YES\n");continue;}if(len==2) //2个字符 {if(s[0]==s[1]) //aa变换后不是,应该是不能变换成还之前的一样的字符,题目没说... {printf("NO\n");continue;}else{printf("YES\n");continue;}}if(len%2==0){for(int i=0;i<len/2;i++)a[i]=s[i];int k=0;for(int i=len-1;i>=len/2;i--)b[k++]=s[i];int n=0;for(int i=0;i<len/2;i++)if(a[i]!=b[i])n++;if(n==1) //aaaa、aaaaaa变换后也不是 printf("YES\n");elseprintf("NO\n"); }else{for(int i=0;i<len/2;i++)a[i]=s[i];int k=0;for(int i=len-1;i>len/2;i--)b[k++]=s[i];int n=0;for(int i=0;i<k;i++)if(a[i]!=b[i])n++;if(n<=1) //aabaa变换后是回文串,可以变换字符b printf("YES\n");elseprintf("NO\n");}}return 0;}下面是简洁点的代码:
#include<cstdio>#include<cstring>int main(){int len;char s[20];while(scanf("%s",s)!=EOF){len=strlen(s);int ans=0;for(int i=0;i<len;i++){if(s[i]!=s[len-i-1])ans++;}if(ans==2||(ans==0&&len%2!=0)) printf("YES\n");elseprintf("NO\n"); }return 0;}
阅读全文
0 0
- 【ZZULIOJ】 2170 DML和回文
- 2170: DML和回文
- 什么是DML和DDL
- DML和DDL
- 什么是DML和DDL
- 什么是DML和DDL?
- SQL DML 和 DDL
- SQL DML 和 DDL
- SQL DML 和 DDL
- DML和DDL
- SQL DML 和 DDL
- DDL和DML
- DDL和DML
- SQL DDL和DML
- DDL、DML和DCL
- DDL和DML
- DDL和DML
- DDL和DML区别
- 图像的柱面投影纠正
- Activity XML属性
- ch1 数据结构绪论
- Elastic Search权威指南 第二章 分布式文档存储的过程
- CCF 高速公路
- 【ZZULIOJ】 2170 DML和回文
- Elastic Search权威指南 第三章 搜索
- 20170814-20170820
- 文件上传类
- mybatis之多对多映射查询(十二)
- Elastic Search权威指南 第四章 映射与分析
- hdu 6158 The Designer
- 使用URLConnection实现post表单提交
- Web网页实现计算器功能