`
Jianquan
  • 浏览: 18761 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

UVa 401 Palindromes 字符串基础

    博客分类:
  • UVa
阅读更多
题目链接:http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=19520
题目大意:给你一个字符串,一要你判断是否是回文串;二要把这个字符串的每一个字符按照给定的规则翻转,而然后判断翻转后的字符串是否是原串的逆序。
    思路不难,但是有些地方要注意。首先要注意的一个问题是,大写字母O和数字0是一样的。这一点我觉得题目的表述不妥,按照我对题目的理解,数字0是无效的,应该是不会出现的,但是结果跟我的理解不一样。然后就是如果串中含有不能翻转的字母,那么是不能成为mirrored string的,我把不能翻转的字母的翻转字母记为-1。
具体代码:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
char reverseNum[]={'0','1','S','E',-1,'Z',-1,-1,'8',-1};
char reverseLetter[]={'A',-1,-1,-1,'3',-1,-1,'H','I','L',-1,'J','M',-1,'O',-1,-1,-1,'2','T','U','V','W','X','Y','5'};
bool isPalindrome(char *str)
{
	int i,len=strlen(str);
	for(i=0;i<len/2;i++)
	{
		if(str[i]=='0'&&str[len-i-1]=='O'||str[i]=='O'&&str[len-i-1]=='0') continue;
		if(str[i]!=str[len-i-1]) break;
	}
	if(i<len/2) return 0;
	else return 1;
}
bool isMirrored(char *str)
{
	int i,len=strlen(str);
	for(i=0;i<(len+1)/2;i++)
		if(isalpha(str[i]))
		{
			if(str[i]=='O'&&str[len-i-1]=='0') continue;
			if(reverseLetter[str[i]-'A']==-1||reverseLetter[str[i]-'A']!=str[len-i-1])
				break;
		}
		else
		{
			if(str[i]=='0'&&str[len-i-1]=='O') continue;
			if(reverseNum[str[i]-'0']==-1||reverseNum[str[i]-'0']!=str[len-i-1])
				break;
		}
	if(i<(len+1)/2) return 0;
	else return 1;
}
int main()
{
	int p,m;
	char str[2000];
	while(gets(str))
	{
		p=m=0;
		if(isPalindrome(str))
			p=1;
		if(isMirrored(str))
			m=1;
		if(p&&m)
			printf("%s -- is a mirrored palindrome.\n\n",str);
		else if(p)
			printf("%s -- is a regular palindrome.\n\n",str);
		else if(m)
			printf("%s -- is a mirrored string.\n\n",str);
		else
			printf("%s -- is not a palindrome.\n\n",str);
	}
	return 0;
}
分享到:
评论

相关推荐

    UVaOJ-401(Palindromes).zip_401 Palindromes

    判断输入字符串是否为镜像或回文串。 来源于UVaOJ - 401. 水题。

    USACO题目Dual Palindromes (dualpal)及代码解析

    USACO题目Dual Palindromes (dualpal)及代码解析

    zoj 1325 Palindromes.md

    zoj 1325 Palindromes.md

    poj 3376 Finding Palindromes.md

    poj 3376 Finding Palindromes.md

    -palindromes-源码.rar

    -palindromes-源码.rar

    CIS-241-Palindromes

    编写一个递归函数testPalindrome,如果存储在数组中的字符串是回文,则返回1,否则返回0。 该函数应忽略字符串中的空格和标点符号。 分级标准 正确性和完整性70% 程序输出和测试15% 程序组织和源代码管理10% ...

    DSA-Interview-Prep

    给定一个字符串,编写一种算法以计算字符串中回文率的单词数。 输出中必须包含回文列表和回文数列表。 输入: "Dad gave mom a Tesla as a racecar" 输出: Dad, mom, racecar, 3 Palindromes 解释哈希表如何工作。...

    palindromes:992015年的课堂项目

    这个应用程式会撷取一串文字,并传回是否是回文集,2015年9月9日 克里斯·斯旺(Chris Swan)和菲利普·香农(Phillip Shannon) 描述 这个应用程式会撷取一串文字,并传回是否属于回文。 设置 在桌面上克隆 在网络...

    -palindromes:js中的基本回文程序

    该项目是多年迭代开发和综合社区知识的产物。 它没有强加特定的开发哲学或框架,因此您可以按照自己的方式自由地构建代码。 主页: : 资料来源: : 推特: 快速开始 选择以下选项之一: ...

    Palindromes:简单的回文解析应用程序,给出了前三个最大的回文

    回文 简单的回文解析应用程序,给出了前三个最大的回文 说明:mvn install在目标/文件夹中运行具有一个参数的应用程序以扫描回文(将列出第一个)

    浙大asm部分题目通过的c++代码

    题目有 Beautiful Meadow Big String Outspread Image Transformation palindromes Sum Up

    ACM.rar_ACM题

    ACM题目及答案——Common permutation,Base 9 Calculator,Calendar,Sorting by Swapping,Palindromes

    hdu刷题入门(1)

    标题前言hdu2023求平均成绩hdu2027统计元音hud2044一只小蜜蜂…hud2029Palindromes _easy versionhud2043密码hud2040亲和数hud2021发工资咯hud2032杨辉三角 前言 今天bigsai陪伴我刷题,我很高兴在他的帮助下过了8道...

    USACO官网93题fps格式 OJ题库

    9 [1.2] 双重回文数 Dual Palindromes 10 [1.3] 混合牛奶 Mixing Milk 11 [1.3] 修理牛棚 Barn Repair 12 [1.3] 牛式 Prime Cryptarithm 13 [1.3] 虫洞 wormhole 14 [1.3] 滑雪课程设计Ski Course Design

    实验指导书—实验2

    设计性试验实验指导书,栈和队列, 一、验证性实验 2 实验1:顺序栈的各种基本运算 2 实验2:链栈的各种基本运算 3 实验3:顺序队列的各种基本...实验4:镜像回文(Palindromes) 10 实验5:模拟车间流水线的工作 12

    超级简单的ACM的习题集

    2001 计算两点间的距离 2005 第几天? 2007 平方和与立方和 2010 水仙花数 2011 多项式求和 2012 素数判定 2013 蟠桃记 2018 母牛的故事 ...2029 Palindromes_easy version 2035 人见人爱A^B 2040 亲和数

    【Codeforces Round#620 (Div. 2)】B. Longest Palindrome 题解

    Returning back to problem solving, Gildong is now studying about palindromes. He learned that a palindrome is a string that is the same as its reverse. For example, strings “pop”, “noon”, “x”, ...

    圆和矩形是否重叠leetcode-Algorithm-Notes:关于Leetcode、Lintcode编码问题的注意事项

    palindromes that can be built */ int longestPalindrome (string & s) { int result = 0 ; bool hasOdd = false ; std::unordered_map&lt; char , int &gt; count; for ( char ch: s) { ++count[ch]; } for (std::...

    RedditDailyChallenges:该项目将为Reddit每日挑战提供一些解决方案

    shortTitle是Reddit管理员提供的名称,例如Connect Four或Palindromes或其他名称。 该约定非常重要,因此请遵守该约定。 正如我前面提到的,如果有人不遵守该约定,我将首先警告您,但是第二次违规后,它将被删除。...

    Codeforces Round #620 (Div. 2) Longest Palindrome

    B. Longest Palindrome ...Returning back to problem solving, Gildong is now studying about palindromes. He learned that a palindrome is a string that is the same as its reverse. For example, strings

Global site tag (gtag.js) - Google Analytics