UVa 401 Palindromes(简单字符串)

简单的判断是否是回文串、镜像串,然后自己写的真费劲,没逃掉刘汝佳的书,这里的代码很有技巧性,特别值得学习,额,其实他书上的代码都很精简

Character Reverse Character Reverse Character Reverse
A A M M Y Y
B   N   Z 5
C   O O 1 1
D   P   2 S
E 3 Q   3 E
F   R   4  
G   S 2 5 Z
H H T T 6  
I I U U 7  
J L V V 8 8
K   W W 9  
L J X X  

这个要用一维数组存储

题意:

思路:

/*
UVa 401 Palindromes
题意:输入一个字符串,判断其是否是回文串或者镜像串
输入的字符可能会有不合法的镜像字符,但是保证没有0,
其他所有字母和9个数字
思路:没逃掉刘汝佳的书,将镜像的字符存在一个数组里面,
将输出的字符串存在一个数组里面,不过确实挺好用,然后就是
简单的首位循环判断了
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctype.h>
using namespace std;
char rev[40]="A   3  HIL JM O   2TUVWXY51SE Z  8 ";
char judge(char c)//相应的镜像符号
{
    if(isalpha(c))//如果是字母
        return rev[c-'A'];
    return rev[c-'0'+25];//如果是数字,+25字母
}
int main()
{
    char output[4][30]={"is not a palindrome.","is a regular palindrome.",
    "is a mirrored string.","is a mirrored palindrome."};//巧妙,省事
    char str[25];
    while(scanf("%s",str)!=EOF)
    {
        int len=strlen(str);
        int flag1=1,flag2=1;
        for(int i=0;i<(len+1)/2;i++)
        {
            if(str[i]!=str[len-i-1])//是否回文
                flag1=0;
            if(judge(str[i])!=str[len-i-1])//是否镜像
                flag2=0;
        }
        //竟然注释掉cout<<flag1<<" "<<flag2<<endl;
        printf("%s -- %s\n\n",str,output[flag2*2+flag1]);
    }
    return 0;
}
/*
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
*/
时间: 2024-09-29 08:38:12

UVa 401 Palindromes(简单字符串)的相关文章

UVa 401 Palindromes(字符串,回文)

 Palindromes  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 i

UVA 401 Palindromes(回文词)

 回文词 Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Practice UVA 401 Appoint description:  acmparand  (2013-07-07)Luke  (2014-01-20) System Crawler  (2015-05-10) Description A regular palindrome is a string of

UVa 401 Palindromes(镜像回文字符串)

 题意  给一个字符串 判定其是否为回文串和镜像串  回文串很好判断  镜像串对于每一个字符用数组保存它的镜像字符就行了  没有的就是空格 注意若字符串长度为奇数  中间那个字母必须是对称的才是镜像串 #include<cstdio> #include<cctype> #include<cstring> const int N = 35; int l; char s[N], mc[] = "A 3 HIL JM O 2TUVWXY5", mn[]

uva 401.Palindromes

题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=342 题目意思:给出一段字符串(大写字母+数字组成).判断是否为回文串 or 镜像串 or 回文镜像串 or 什么都不是.每个字母的镜像表格如下 Character Reverse Character Reverse Character Reverse A A M M Y Y B

uvaoj 401 Palindromes

************************************************题目描述*************************************************** UVA - 401 Palindromes Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description A regular palindrome is

UVA 之401 - Palindromes

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 ri

C 封装一个通用链表 和 一个简单字符串开发库

引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是C++写,界面是C#写.那时候刚进去评级我是中级,因为他问我关于系统锁和信号量都答出来.开发一段 时间,写C#也写的很溜.后面招我那个人让我转行就写C++和php,那时候就开始学习C++有关知识. 后面去四川工作了,开发安卓,用eclipse + java语法 + android jdk,开发前端,

POJ3617 简单字符串

三分之一的通过率的字符串 题意为,输入一个S串,有一个空串T.对S串有两种操作,一是取出S串的头放入T串的尾,二是取出S串的尾放入T串的尾.要求是要使得T串的字典序最小. 从题意来看是一个很明显的贪心思路.那么想到这一步其实比较接近答案了,但是需要注意的一点是当S串的头和尾相同的时候,那么这个时候我们当然也希望取出更小的字符,所以就需要比较下一个字符.但是如果指向头和尾的指针都分别往里前进一位的时候,这俩字符还是相同,咋办?这个情形...对,就是回文字符串.形同“ABCDCBA”这样的字符串.这

UVa 725 Division --- 简单枚举

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=666 /* UVa 725 Division --- 简单枚举 */ #include <cstdio> #include <cstring> bool used[10]; /* 判断传进来的两个数是否满足条件 */ bool judge(int a, i