例题3-3 回文词(Palindromes, UVa401)
输入一个字符串,判断它是否为回文串以及镜像串。输入字符串保证不含数字0。所谓 回文串,就是反转以后和原串相同,如abba和madam。所有镜像串,就是左右镜像之后和原
串相同,如2S和3AIAE。注意,并不是每个字符在镜像之后都能得到一个合法字符。在本题 中,每个字符的镜像如图3-3所示(空白项表示该字符镜像后不能得到一个合法字符)。

图3-3 镜像字符
输入的每行包含一个字符串(保证只有上述字符。不含空白字符),判断它是否为回文 串和镜像串(共4种组合)。每组数据之后输出一个空行。
样例输入:
NOTAPALINDROME
ISAPALINILAPASI
2A3MEAS
ATOYOTA
样例输出:
NOTAPALINDROME -- is not a palindrome.
ISAPALINILAPASI -- is a regular palindrome.
2A3MEAS -- is a mirrored string.
ATOYOTA -- is a mirrored palindrome.
#include<stdio.h>
#include<string.h>
#include<ctype.h>
char a[] = "A 3 HIL JM O 2TUVWXY51SE Z 8 ";
char* msg[] = {"not a palindrome", "a regular palindrome", "a mirrored str","a mirrored palindrome"};
char r(char ch)
{
if(isalpha(ch)) return a[ch - 'A'];
else return a[25 + ch - '0'];
}
int main()
{
int p = 1, m = 1;
char s[100];
scanf("%s", s);
int len = strlen(s);
for(int i = 0; i < (len + 1)/2; i++)
{if(s[i] != s[len - 1 - i]) p = 0;
if(r(s[i])!= s[len - 1 - i]) m = 0;}
printf("%s--is %s", s, msg[2*m + p]);
return 0;
}
1.msg是一个二维字符串数组 用char定义 指针可‘降维’ 字符串数组每一条字符串用“字符串”括起来 每一个括起来的字符串算一个单位
2.isalpha(ch);可以判断ch是否为字符 使用该函数就要引用ctype.h
3.若为数字的话 由于ch为字符串 要把字符串变成数字才能表示数组的下标 所以减去一个'0'即可将 ‘数字’ 变为 数字
4.字母表有26个字母 为什么是25+ch呢 是因为数组下标从0开始 25就代表了26个位置
5. for(int i = 0; i <= (len + 1)/2; i++) 其中(len + 1)/2 可以看成是 len/2 + 1/2 这样可以达到四舍五入的目的 当len为奇数时 假如是7 那么除二后就是 3.5 但是计算机只会取3 这样也就是会检查(循环)三次 这样第四位 也就是对称轴的位置检查不了 不过我认为可以不加1 因为只要对称轴两边的字符对称或者镜像就可以了 对称轴没必要检查
6.巧妙地构造p和m 达到输出对应结果的目的
例题3-3 回文词(Palindromes, UVa401)的更多相关文章
- 例题3_3 回文词(UVa401)
输入一个字符串,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有镜像串,就是左右镜像之后和原串相同,如2S和3AIAE.注意,并 ...
- 回文词(UVa401)
详细题目描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- 回文词 (Palindromes,Uva401)
例题 3-3 回文词 (Palindromes,Uva401) 输入一个字符中,判断它是否为回文串以及镜像串.输入字符串保证不含数字0.所谓回文串,就是反转以后和原串相同,如abba和madam.所有 ...
- 401 Palindromes(回文词)
Palindromes A regular palindrome is a string of numbers or letters that is the same forward as ba ...
- CSU 1328: 近似回文词
省赛的A题...现场都没什么人做...其实就一暴力水题......坑死了... 1328: 近似回文词 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1 ...
- 字符串 - 近似回文词 --- csu 1328
近似回文词 Problem's Link:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 analyse: 直接暴力枚举每一个终点,然后枚举 ...
- csuoj 1328: 近似回文词
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1328 1328: 近似回文词 Time Limit: 1 Sec Memory Limit: 1 ...
- Vijos1327回文词【动态规划】
回文词 回文词是一种对称的字符串--也就是说,一个回文词,从左到右读和从右到左读得到的 结果是一样的.任意给定一个字符串,通过插入若干字符,都可以变成一个回文词.你的任务是写 一个程序,求出将给定字符 ...
- 回文词_KEY
回文词 (palin.pas/c/cpp) [问题描述] 回文词是一种对称的字符串--也就是说,一个回文词,从左到右读和从右到左读得的结果是一样的.任意给定一个字符串,通过插入若干字符,都可以变成一个 ...
随机推荐
- JavaWeb实现图片上传功能
首先导入文件上传的jar包 然后在Spring-servlet.xml文件中设置上传文件解析器 <!--上传文件解析器--> <bean id="multipartReso ...
- [程序员代码面试指南]递归和动态规划-数字字符串转换为字母组合的种数(DP)
题意 给一个字符串,只由数字组成,若是'1'-'26',则认为可以转换为'a'-'z'对应的字母,问有多少种转换方法. 题解 状态转移很好想,注意dp多开一位,dp[0]为dp[2]的计算做准备.dp ...
- PooledByteBuf内存池-------这个我现在不太懂
转载自:http://blog.csdn.net/youaremoon/article/details/47910971 http://blog.csdn.net/youar ...
- python 第二节课内容和练习
一.列表 []表示列表,用','进行分隔,list有序 能够进行索引 切片 (in append extend count index insert pop remove,reverse sort c ...
- C#设置装配加载选项
NX在打开装配时,需要设置加载方式,如下图所示: 因此,当装配进行了拷贝之后,PART路径变化,再次用NX打开时,会报无法加载的错误.这时需要重新设置从搜索文件夹打开,再次保存之后,之后再按照保存打开 ...
- xss利用——BeEF#stage4(其余功能介绍)
目录 信息收集 => 社会工程 =>网络扫描 => 结合metasploit => tunneling => xss => 维持权限 功能介绍 #1 - 信息收集 ...
- AI小白必读:深度学习、迁移学习、强化学习别再傻傻分不清
摘要:诸多关于人工智能的流行词汇萦绕在我们耳边,比如深度学习 (Deep Learning).强化学习 (Reinforcement Learning).迁移学习 (Transfer Learning ...
- WPF启动流程-自己手写Main函数
WPF一般默认提供一个MainWindow窗体,并在App.Xaml中使用StartupUri标记启动该窗体.以下通过手写实现WPF的启动. 首先先介绍一下VS默认提供的App.Xaml的结构,如下图 ...
- java安全编码指南之:敏感类的拷贝
目录 简介 一个简单的SensitiveObject SensitiveObject的限制 对SensitiveObject的攻击 解决办法 简介 一般来说class中如果包含了私有的或者敏感的数据的 ...
- 优雅的在React组件中注册事件
前言 在React的开发中,我们经常需要在 window 上注册一些事件, 比如按下 Esc 关闭弹窗, 按上下键选中列表内容等等.比较常见的操作是在组件 mount 的时候去 window 上监听一 ...