HDU 1544 Palindromes(判断是否为回文序列和镜像序列)
来源:互联网 发布:caffe 怎么用 编辑:程序博客网 时间:2024/05/17 05:16
Description
A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string "ABCDEDCBA" is a palindrome because it is the same when the string is read from left to right as when the string is read from right to left.
A mirrored string is a string for which when each of the elements of the string is changed to its reverse (if it has a reverse) and the string is read backwards the result is the same as the original string. For example, the string "3AIAE" is a mirrored string because "A" and "I"are their own reverses, and "3" and "E" are each others' reverses.
A mirrored palindrome is a string that meets the criteria of a regular palindrome and the criteria of a mirrored string. The string"ATOYOTA" is a mirrored palindrome because if the string is read backwards, the string is the same as the original and because if each of the characters is replaced by its reverse and the result is read backwards, the result is the same as the original string.
Of course,"A","T", "O", and "Y" are all their own reverses.
A list of all valid characters and their reverses is as follows.
Note that O (zero) and 0 (the letter) are considered the same character and therefore ONLY the letter "0" is a valid character.
Input
Input consists of strings (one per line) each of which will consist of one to twenty valid characters. There will be no invalid characters in any of the strings. Your program should read to the end of file.
Output
For each input string, you should print the string starting in column 1 immediately followed by exactly one of the following strings.
Note that the output line is to include the -'s and spacing exactly as shown in the table above and demonstrated in the Sample Output below.
In addition, after each output line, you must print an empty line.
Sample Input
NOTAPALINDROME ISAPALINILAPASI 2A3MEAS ATOYOTA
Sample Output
NOTAPALINDROME -- is not a palindrome. ISAPALINILAPASI -- is a regular palindrome. 2A3MEAS -- is a mirrored string. ATOYOTA -- is a mirrored palindrome.
Hint
use the C++'s class of string will be convenient, but not a must。
题目大意:
判断字符串是回文串还是反射串。
解题思路:
利用map。
代码:
#include<iostream>#include<string>#include<cstdio>#include<map>using namespace std;map <char,char>mp;string str;void initial(){ mp['A']='A';mp['B']=' ';mp['C']=' ';mp['D']=' ';mp['E']='3';mp['F']=' ';mp['G']=' '; mp['H']='H';mp['I']='I';mp['J']='L';mp['K']=' ';mp['L']='J';mp['M']='M';mp['N']=' '; mp['O']='O';mp['P']=' ';mp['Q']=' ';mp['R']=' ';mp['S']='2';mp['T']='T';mp['U']='U'; mp['V']='V';mp['W']='W';mp['X']='X';mp['Y']='Y';mp['Z']='5';mp['1']='1';mp['2']='S'; mp['3']='E';mp['4']=' ';mp['5']='Z';mp['6']=' ';mp['7']=' ';mp['8']='8';mp['9']=' ';}void solve(){ int flag1=0,flag2=0; for(int i=0;i<=(str.length()+1)/2;i++){ if(str[i]==str[str.length()-i-1]){ flag1=1; } else if((str[i]=='O'||str[i]=='0')&&(str[str.length()-i-1]=='O'||str[str.length()-i-1]=='0')) flag1=1; else { flag1=0; break; } } for(int i=0;i<=(str.length()+1)/2;i++){ if(mp[str[i]]==str[str.length()-i-1]){ flag2=1; } else if((str[i]=='O'||str[i]=='0')&&(str[str.length()-i-1]=='O'||str[str.length()-i-1]=='0')) flag2=1; else { flag2=0; break; } } if(flag1!=1&&flag2!=1) cout<<str<<" -- is not a palindrome."<<endl<<endl; if(flag1==1&&flag2!=1) cout<<str<<" -- is a regular palindrome."<<endl<<endl; if(flag2==1&&flag1!=1) cout<<str<<" -- is a mirrored string."<<endl<<endl; if(flag1==1&&flag2==1) cout<<str<<" -- is a mirrored palindrome."<<endl<<endl;}int main(){ initial(); while(cin>>str){ solve(); } return 0;}
- HDU 1544 Palindromes(判断是否为回文序列和镜像序列)
- 判断字符序列是否为回文
- 判断一个字符串是否为回文串和镜像串(Palindromes)
- 2013.12.27 判断是否为回文数与斐波拉契序列问题判断是否为回文数
- 判断是否为回文数与斐波拉契序列问题
- 边看边写(判断一个序列是否为出栈序列)
- HDOJ1318 Palindromes(镜像回文字符串)
- 编写判断一个字符序列是否为回文。回文是指一个字符序列以中间 字符为基准两边字符完全相同,即顺着看和倒着看是相同的字符序列。
- 判断是否为回文数+求一个序列的第30个数
- 【Leetcode】234. Palindrome Linked List -判断链表是否为回文序列
- 判断回文序列
- 栈 判断回文序列
- 判断是否为栈的pop序列
- 判断序列是否为二叉树后序遍历
- 判断序列是否为合法出栈
- 判断下列关键字序列是否为堆?
- HDU 1544Palindromes(求回文字符串)
- 判断一个序列是否为栈的输出序列
- Axure做轮播页
- 使kgtp支持存储超过一页的内存数据
- hdu1394-Minimum Inversion Number
- android之【LinearLayout线性布局代码实现】
- USB Mass Storage协议
- HDU 1544 Palindromes(判断是否为回文序列和镜像序列)
- STL 优先队列-- 树-堆结构练习——合并果子之哈夫曼树
- POJ 3009 Curling 2.0 (DFS)
- hdu 2124 Repair the Wall
- mac 系统环境变量设置
- pascal方格稿纸
- 十七道海量数据处理面试题与Bit-map详解---之我对bitmap的理解
- 如何在MAC环境下(Xcode)使用svn,以及新手在团队使用svn注意事项
- Linux下的目录扫描操作函数使用实践