字符串-401 - Palindromes
2016-07-11 14:21
197 查看
401 - Palindromes
题目大意:回文字符串和镜像字符串的定义不同,互相交叉,判断一个字符串是回文还是镜像的,或者二者都属于或者二者都不属于。解题过程:提交了4次才AC,第一次是缺少判断,字符本身没有反转对应字符时,即使对应位置的字符的反转字符相同(都为"n",说明没有反转字符),也不属于镜像字符。
第二、三次是格式错误,第二次少了“--”,第三次少了空行。
正确代码如下:
# include <cstdio> # include <cstring> # include <iostream> //# define LOCAL using namespace std; int main() { # ifdef LOCAL freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); # endif // int i; //0~8是数字1-9,9~34是字母A-Z char reverse[35]={'1','S','E','n','Z','n','n','8','n', 'A','n','n','n','3','n','n','H','I','L','n','J','M','n', 'O','n','n','n','2','T', 'U','V','W','X','Y','5'}; //为0表示没有镜像字符 char a[100]; bool ispalind,ismirror; while(scanf("%s",a)==1) { ispalind=ismirror=true; int len=strlen(a); /* cout<<"字符串长: "<<len<<endl; //*/ for(int i=0;i<=(len-1)/2;i++)//对称位置 i (len-1)-i { /* printf("%c",reverse[a[i]-'A'+9]); //*/ if(a[i]!=a[len-1-i]) ispalind=false; if(a[i]<='9'&&a[i]>='1'){ if(reverse[a[i]-'1']=='n'||reverse[a[i]-'1']!=a[len-1-i]) ismirror=false; } else { if(reverse[a[i]-'A'+9]=='n'||reverse[a[i]-'A'+9]!=a[len-1-i]) ismirror=false; } } /* printf("\n"); //*/ if(ispalind) { if(ismirror) printf("%s -- is a mirrored palindrome.\n\n",a); else printf("%s -- is a regular palindrome.\n\n",a); } else { if(ismirror) printf("%s -- is a mirrored string.\n\n",a); else printf("%s -- is not a palindrome.\n\n",a); } } return 0; }
相关文章推荐
- Hibernate+JPA注解
- PHP 获取中国时间,即上海时区时间
- Javascript数组操作详细解答
- oracle列出两个日期间所有日期
- Mike and Cellphone
- POJ 2367 Genealogical tree【拓普排序】
- MAP
- Java并发编程:同步容器
- 第一篇博文~
- Linq To Entity多条件or查询处理
- nodejs 安装没有找到 configure
- 语义化标签
- POJ 2186 Popular Cows
- angularjs 简介
- Java并发编程:深入剖析ThreadLocal
- POJ-2240 Arbitrage( 最短路 )
- document.getElementById("xx").style.xxx中的所有属性
- html 标签
- 使用 ssm 框架,基本流程
- Rabbitmq 学习笔记(三)发布订阅