UVA-401 Palindromes
来源:互联网 发布:淘宝公仔12星座 编辑:程序博客网 时间:2024/06/05 17:16
2016-07-12
UVA - 401 Palindromes
题目大意:判断是否回文、镜面。回文即从左往右与从右往左相同。镜面根据所提供的表格,可能存在非法字符。一开始理解错题意,以为不存在非法字符就是镜面,实际上是从左往右根据表格将全部字符化为镜像后,要与从右往左相同。
解题思路:遍历每个元素,进行回文的判断,是回文的话tag[0] = 1 ,不是的话tag[0] = 0 ,是回文的话,对回文的前半部分进行判断,判断是否是镜像回文,不是回文的话,对字符串前半部分进行判断,判断是否是镜像字符串。
注意:对字符串的中间部分要进行判断。
#include <iostream>#include <cstring>using namespace std;int main () { char str[1000]; while ( cin >> str ) { int tag[2] = {1,0}; int len = strlen(str); for ( int i = 0; i < len/2; i++) { if ( str[i] != str[len-i-1] ) { tag[0] = 0; break; } else tag[0] = 1; if ( tag[0] == 1 && ( str[i] == 'A' || str[i] == 'T' || str[i] == 'Y' || str[i] == 'H' || str[i] == 'I' || str[i] == 'M' || str[i] == 'O' || str[i] == 'U' || str[i] == 'V' || str[i] == 'W' || str[i] == 'X' || str[i] == '1' || str[i] == '8' ) ) tag[0] = 2; else { tag[0] = 1; break; } } if ( tag[0] == 2 ) { if ( str[len/2] == 'A' || str[len/2] == 'T' || str[len/2] == 'Y' || str[len/2] == 'H' || str[len/2] == 'I' || str[len/2] == 'M' || str[len/2] == 'O' || str[len/2] == 'U' || str[len/2] == 'V' || str[len/2] == 'W' || str[len/2] == 'X' || str[len/2] == '1' || str[len/2] == '8' ) tag[0] = 2; else tag[0] = 1; } for ( int i = 0; i < len/2; i++) { if ( str[i] == str[len-i-1] || ( str[i] == 'E' && str[len-i-1] == '3' ) || ( str[i] == 'J' && str[len-i-1] == 'L' ) || ( str[i] == 'L' && str[len-i-1] == 'J' ) || ( str[i] == 'S' && str[len-i-1] == '2' ) || ( str[i] == 'Z' && str[len-i-1] == '5' ) || ( str[i] == '2' && str[len-i-1] == 'S' ) || ( str[i] == '3' && str[len-i-1] == 'E' ) || ( str[i] == '5' && str[len-i-1] == 'Z' ) && (tag[0] == 0) ) tag[1] = 1; else { tag[1] = 0; break; } } if ( len == 1 && ( str[0] == 'A' || str[0] == 'T' || str[0] == 'Y' || str[0] == 'H' || str[0] == 'I' || str[0] == 'M' || str[0] == 'O' || str[0] == 'U' || str[0] == 'V' || str[0] == 'W' || str[0] == 'X' || str[0] == '1' || str[0] == '8' ) ) tag[0] = 2; switch ( tag[0] ) { case 1 : cout << str << " -- is a regular palindrome." << endl; break; case 2 : cout << str << " -- is a mirrored palindrome." << endl; break; case 0 : if ( tag[1] == 0 ) { cout << str << " -- is not a palindrome." << endl; break; } else { cout << str << " -- is a mirrored string." << endl; break; } } cout << endl; memset ( str, '\0', sizeof(str)); } return 0;}
1 0
- UVa 401 Palindromes
- UVa OJ 401-Palindromes
- UVa:401 - Palindromes
- uva 401 Palindromes //字符串
- uva 401 - Palindromes
- UVa 401 - Palindromes
- UVa 401 - Palindromes
- UVa 401 - Palindromes
- uva-401 - Palindromes
- UVa 401 Palindromes
- uva 401 Palindromes
- uva 401 Palindromes
- UVA 401 - Palindromes
- UVa 401 - Palindromes
- UVA 题目401 - Palindromes
- UVA 401 Palindromes
- UVa 401: Palindromes
- UVA 401 Palindromes
- 使用nginx服务器时,php获取用户ip的方法
- redis配置文件详解
- 运行复制的ZooKeeper 部署
- 使用ssh-keygen和ssh-copy-id三步实现SSH无密码登录
- Hadoop之HBase
- UVA-401 Palindromes
- 帝国CMS 模板if else 判断
- 哈弗曼树
- 257. Binary Tree Paths
- eclipse中导入jquery或者其他的js文件报错
- SQLServer 数据库变成单个用户后无法访问问题的解决方法
- 极大似然估计
- hdu 5266(线段树+LCA)
- 取消SVN服务器的关联