回文串题目的解析以及我的一些错误思考
2016-12-12 22:40
525 查看
1650: (D)回文串
Time Limit: 1 Sec Memory Limit:128 MB
Submit: 480 Solved: 154
SubmitStatusWeb
Board
Description
回文字符串是:一个字符串正着读和倒着读是一样的序列。例如ABCBA就是一个一个回文串,现在无聊的psq重新定义了一种“回文串”叫对称串,即一个字符串以中点进行对叠,可以完全重合,例如ATHTA。Input
输入包含多组测试实例每组测试实例包含一个字符串s(长度不大于10000,且仅包含大写字母)
Output
如果字符串s是对称串这输出“Yes”否则输出“No”Sample Input
ATHTAABCBASample Output
YesNoHINT
定义以下为对称字母A H I M O T U V W X Y
首先再强调一遍认真读题,本题要求的是按中点折叠后能够完全的重合,所以字符串中的
字符必须是[b]A H I M O T U V W X Y这些。[/b]
[b]所以读取一个字符串后可以先从头到尾的扫一遍,如果有不是这些字符的就可以直接输出No[/b]
[b]再按照回文字符串的比较方法再比较久可以以了。[/b]
[b]完整代码如下[/b]
[b]#include<stdio.h>
#include<string.h>
int main(void)
{
int top,len,i,k,next,flag,mid;
char a[10010],s[10010];
while(~scanf("%s",a))
{
flag=0;
len = strlen(a);
for(k=0;k<len;k++)
{
if(a[k]!='A'&&a[k]!='H'&&a[k]!='I'&&a[k]!='M'&&a[k]!='O'&&a[k]!='T'&&a[k]!='U'&&a[k]!='V'&&a[k]!='W'&&a[k]!='X'&&a[k]!='Y')
{
flag=1;
printf("No\n");
break;
}
}
if(flag == 0)
{
top = 0;
mid = len/2 - 1;
for(i=0;i<=mid;i++)
{
s[++top] = a[i];//先把前半部分的字符存起来
}
if(len % 2 == 0)
next = mid + 1;//对称的另一个起始点
else
next = mid + 2;
for(i=next;i<len;i++)
{
if(a[i] != s[top])
break;
top--;//这里很关键不能合并
}
if(top == 0)
printf("Yes\n");
else
printf("No\n");
}
}
return 0;
}
[/b]
[b]如果可以请关注一下我的公众号(会不定时更新一些算法)[/b]
[b]
[/b]
相关文章推荐
- JavaScript typeof操作符以及其它一些小测试题目解析
- 关于最近做的一些有关 tarjan 类型的题目以及解析汇总(同时包括了点2-SAT、topo之类的算法)
- Ajax基础必读:AJAX中的一些关键技术(解析xml的封装类,以及操纵DOM对象)
- cloudscape网络配置,roller服务器安装,以及一些我喜欢犯的小错误
- 随便聊聊 SOA & SOAP & WebService 的一些东西,以及客户端开发的代码逻辑解析
- 脚印:关于错误编码的管理的一些思考
- web.xml文件解析,以及tomcat启动常见错误总结一哈。
- Win2003 下 IIS6 的一些错误以及解决方法
- linux系统下编译的一些有用的选项以及错误
- 一些javascript一些题目的解析
- 一些javascript一些题目的解析
- jQuery发送含有数组参数的ajax请求以及后台Struts2的OGNL解析错误
- 关于毕业设计题目的一些思考
- 一道赋值题目的错误解析
- Oracle数据库的网络连接配置以及一些常见错误信息解决方法
- Dreamweaver正则表达式彻底解决zencart中的Session Cookie报错、XML解析错误以及空白
- 最近工作中犯的一些错误,以及总结的体会
- 关于人性的一些思考:如何提高员工工作热情与成就感,以及因材施教的心灵培训
- 转:PHP中如何保持SESSION以及由此引发的一些思考
- 两种描述瑞年的方法 以及由此引申的一些思考