uva 401 Palindromes(字符串回文处理)
来源:互联网 发布:陈有西 公知律师 编辑:程序博客网 时间:2024/05/24 15:42
题意是给你一个字符串,你来判断它是题目给你的哪种字符串。
挫逼死了,开始的时候定了一个标致,从标致向两边递推来判断字符串是否相等。
结果把 len / 2 判断错了:若 len 为奇数(比如 5 ),则 len / 2 = 2,则中心点为 s[ 2 ],即s[ len / 2],向两边推。
若 len 为偶数(比如 6 ),则 len / 2 = 3,则对称点为 s[ 3 ],即s[len / 2],与s[len / 2 + 1] 对称,然后向两边推。
后来我发现这种做法真心挫爆了。
比较范例的做法:
用 len / 2 来限制左边移动的指针长度,用len - i - 1 来和 i ,对称。
bool is_regular(){ int len = strlen(s); for (int i = 0; i < len / 2; i++) { if (s[i] != s[len - i - 1]) return false; } return true;}这是本题的第一个注意点。
第二个注意点是第二种判断时,若只有一个字符,需要判断这个字符是否在镜子字符里,在的话是镜子回文,不在是一般回文。
第二种判断实现的时候,基本思路是,一个遍历找到镜子字符,然后再判断。开始的时候逻辑搞错了,所以一直错。
代码:
#include<stdio.h>#include<string.h>char s[10000];bool is_regular(){ int len = strlen(s); for (int i = 0; i < len / 2; i++) { if (s[i] != s[len - i - 1]) return false; } return true;}bool is_mirrored(){ char m1[] = {"AEHIJLMOSTUVWXYZ12358"}; char m2[] = {"A3HILJMO2TUVWXY51SEZ8"}; int len = strlen(s); int i; if (len == 1) { for (i = 0; i < 21; i++) { if (s[0] == m1[i]) break; } if (i == 21 || s[0] != m2[i]) return false; } else { int j; for(j = 0; j < len / 2; j++) { for (i = 0; i < 21; i++) { if (s[j] == m1[i]) break; } if (i == 21 || s[len - j - 1] != m2[i]) return false; } } return true;}int main(){ while (scanf("%s", s) != EOF) { if (is_regular()) { if (is_mirrored()) { printf("%s -- is a mirrored palindrome.\n\n", s); } else { printf("%s -- is a regular palindrome.\n\n", s); } } else { if (is_mirrored()) printf("%s -- is a mirrored string.\n\n", s); else printf("%s -- is not a palindrome.\n\n", s); } } return 0;}
0 0
- uva 401 Palindromes(字符串回文处理)
- UVa 401 Palindromes(字符串,回文)
- uva 401 Palindromes(字符串处理)
- UVa 401 Palindromes(镜像回文字符串)
- Palindromes - UVa 401 字符串处理
- UVa 401 Palindromes(回文词)
- UVA - 401 Palindromes (回文串)
- 回文词(Palindromes, UVa 401)
- UVa 401 回文词(Palindromes)
- UVA 401 - Palindromes(字符串)
- uva 401 Palindromes(基本的字符串处理)
- UVa 401 - Palindromes(回文词)
- UVA 401 Palindromes 回文词
- UVA 401 Palindromes 回文词
- UVA 401 Palindromes(回文词)
- hdu 5340 Three Palindromes(字符串处理+ 回文)
- codeforces No to Palindromes!(字符串处理,不能有回文)
- uva 401 Palindromes //字符串
- 开发需要记住的几件事情
- EGORefreshTableHeaderView--ARC下面的使用
- 程序员生存定律--细论影响人生成绩的四个要素(2)
- 2014-06-15工作周报-耿田义
- 图算法总结2(最短路径、最大流、关键路径)[没完成]
- uva 401 Palindromes(字符串回文处理)
- Haskell学习——语法
- Ajax的post提交数据
- YUI事件:自定义事件,以及这几天对javascript编程的认识
- 个人学习记录_软件结构(1)
- linux下单独编译安装Apache rewrite_module
- Eclipse中配置Tomcat
- 适配器模式
- zend studio 中文版 ZendStudio-9.0.3 安装、激活、在线汉化 教程