[算法练习] UVA-401-Palindromes
UVA Online Judge 题目401 Palindromes 回文串
问题描述:
回文串(Palindromes)就是正着读和反着读完全一样的字符串,例如"ABCDEDCBA"。
镜像串(Mirrored string)有些类似回文串,字符'3'的镜像可以看成是'E',字符'A'本身就是对称的所以它的镜像字符还是'A'。我们把像"3AIAE"这样的字符串看做镜像串。
镜像回文串(Mirrored palindrome)是符合上面两个条件的字符串,比如"ATOYOTA"。‘A’、‘T’、‘O’、‘Y’几个字符的镜像字符都是其自身。
详细的字符与镜像字符对应表如下:
| 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 |
注意:数字0被看做和字母O相同,并且输入中只包含有字母O。
输入格式:
每行为一个需要判断的字符串,读取到文件结束符后结束。
输出格式:
针对每一行输入,你需要判断其字符串类型并输出原字符串加上语句,见下表:
| STRING | CRITERIA |
| " -- is not a palindrome." | 既不是回文也不是镜像串 |
| " -- is a regular palindrome." | 普通回文串 |
| " -- is a mirrored string." | 镜像串 |
| " -- is a mirrored palindrome." | 镜像回文串 |
注意:每行语句之间有一个空行,也就是说需要在字符串后面写上“\n\n”,这个地方WA了一次。。太坑爹了。
示例输入:
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
示例输出:
NOTAPALINDROME -- is not a palindrome. ISAPALINILAPASI -- is a regular palindrome. 2A3MEAS -- is a mirrored string. ATOYOTA -- is a mirrored palindrome.
代码:(没注意输出格式WA一次。。)
/*
Problem : UVA Online Judge - 401 Palindromes
Date:2014-04-03
Author:Leroy
*/ #include <stdio.h>
#include <string.h> char ch[] = "AEHIJLMOSTUVWXYZ12358";
char chRe[] = "A3HILJMO2TUVWXY51SEZ8"; int hasRe(char c)
{
int has = ;
for (int i = ; i < ; i++)
{
if (ch[i] == c)
has = ;
}
return has;
} char getRe(char c)
{
for (int i = ; i < ; i++)
{
if (ch[i] == c)
return chRe[i];
}
} int is_P(char* str, int n)
{
int i;
for (i = ; i < n / ; i++)
{
if (str[i] != str[n - i - ])
return ;
}
return ;
} int is_M(char* str, int n)
{
if (n == )
{
if (hasRe(str[]))
{
return ;
}
else
{
return ;
}
} for (int i = ; i < n / ; i++)
{
if (hasRe(str[i]))
{
char t = getRe(str[i]);
if (t != str[n - i - ])
{
return ;
}
}
else
{
return ;
}
} if (n % != )
{
int x = n / ;
if (hasRe(str[x]))
{
return ;
}
else
{
return ;
}
} return ;
} int main(){
char str[];
while (gets(str) != NULL)
{
int len = strlen(str);
if (len == )
break;
int isMirro = , isPalin = ;
int i = ; isPalin = is_P(str, len);
isMirro = is_M(str, len); if (isPalin == ){
if (isMirro == )
printf("%s -- is not a palindrome.\n\n", str);
else
printf("%s -- is a mirrored string.\n\n", str);
}
else
{
if (isMirro == )
printf("%s -- is a regular palindrome.\n\n", str);
else
printf("%s -- is a mirrored palindrome.\n\n", str);
} }
}
[算法练习] UVA-401-Palindromes的更多相关文章
- uva 401.Palindromes
题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...
- UVa 401 - Palindromes 解题报告 - C语言
1.题目大意 输入字符串,判断其是否为回文串或镜像串.其中,输入的字符串中不含0,且全为合法字符.以下为所有的合法字符及其镜像: 2.思路 (1)考虑使用常量数组而不是if或switch来实现对镜像的 ...
- uva 401 Palindromes 解题报告
题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVa 401 Palindromes(镜像回文字符串)
题意 给一个字符串 判定其是否为回文串和镜像串 回文串非常好推断 镜像串对于每个字符用数组保存它的镜像字符即可了 没有的就是空格 注意若字符串长度为奇数 中间那个字母必须是对称的才是镜 ...
- 【例题3-3 UVA - 401】Palindromes
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果一个字符没有对应的镜像,那么它对应的是一个空格. 然后注意 aba这种情况. 这种情况下b也要查一下它的镜像是不是和b一样. [ ...
- Palindromes UVA - 401
A regular palindrome is a string of numbers or letters that is the same forward as backward. For e ...
- UVA大模拟代码(白书训练计划1)UVA 401,10010,10361,537,409,10878,10815,644,10115,424,10106,465,10494
白书一:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=64609#overview 注意UVA没有PE之类的,如果PE了显示WA. UVA ...
- RMQ算法 以及UVA 11235 Frequent Values(RMQ)
RMQ算法 简单来说,RMQ算法是给定一组数据,求取区间[l,r]内的最大或最小值. 例如一组任意数据 5 6 8 1 3 11 45 78 59 66 4,求取区间(1,8) 内的最大值.数据量小 ...
- 401 Palindromes(回文词)
Palindromes A regular palindrome is a string of numbers or letters that is the same forward as ba ...
- [算法练习] UVA 10420 - List of Conquests?
UVA Online Judge 题目10420 - List of Conquests 问题描述: 题目很简单,给出一个出席宴会的人员列表,包括国籍和姓名(姓名完全没用).统计每个国家有多少人参加, ...
随机推荐
- 详解Java解析XML的四种方法
XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...
- Arduino Due, Maple and Teensy3.0 的 W5200性能测试
开源平台中以太网连接方案里W5100是众所周知的,W5200正在此领域越来越受欢迎.这个测试结果是在Arduino Due(Atmel CortexM3-84Mhz), Maple(ST Cortex ...
- MySQL timestamp用法
与timestamp类型相关的类型包括:date类型与datetime类型.date类型只包含日期部分,不包含时间部分,它的格式为'YYYY-MM-DD',支持的范围为'1000-01-01' to ...
- SQL NULL Values
NULL代表缺失的.未知的数据.表的列值默认是NULL.如果某个表的某个列不是NOT NULL的,那么当我们插入新纪录.更新已存在的记录时,可以不用为此列赋值,这意味着那个列保存为NULL值. NUL ...
- [GUI]界面开发类库
如果我们不十分清楚需要什么样的界面风格及如何实现,请按以下两个步骤操作: (1) 搞清楚这种风格叫什么名字 (2) 查现有的比较著名的GUI库是否已有相应的实现方案. (3) ...
- 使用gcc编译gdb调试
gcc 在linux系统中,默认是没有安装gcc编译器的,可以通过命令 rpm -q | grep gcc 来查看.安装命令为: yum -y install gcc 安装后,编写一个.c结尾的文件. ...
- linux杂谈(十八):DNS服务器的配置(一)
原文地址: http://blog.chinaunix.net/uid-29622064-id-4242123.html 1.DNS服务器简介 域名系统(英文:Domain Name System,縮 ...
- SmallDateTime时间范围检查
SamllDataTime是SQL Server中的一种表达时间的类型, 精度不高但是省空间,具体的细节就查看一下MSDN的文档吧. http://msdn.microsoft.com/zh-cn/l ...
- [AngularJS] ui-router: Abstract States
ui-router has the powerful ability to define abstract states, or states that can't be navigated to, ...
- Tomcat安装、配置、优化及负载均衡详解
一.常见JavaWeb服务器 1.WebLogic:是BEA公司的产品.WebSphereAS:是IBM公司的产品.JBossAS:红帽公司的产品,可以自行了解 2.Tomcat服 ...