第四章_回文判断
来源:互联网 发布:数据结构常用算法 编辑:程序博客网 时间:2024/06/07 20:13
回文,英文palindrome,指一个顺着读和反过来读都一样的字符串,比如madam、我爱我,这样的短句在智力性、趣味性和艺术性上都颇有特色,中国历史上还有很多有趣的回文诗。
那么,我们的第一个问题就是:判断一个字串是否是回文?
解法一
同时从字符串头尾开始向中间扫描字串,如果所有字符都一样,那么这个字串就是一个回文。采用这种方法的话,我们只需要维护头部和尾部两个扫描指针即可,代码如下::
#include<iostream>#include<cstring>using namespace std;bool isPalindrome(char *s,int n){if(s==NULL||n<1){return false;}char* first;char* last;first=s;last=s+n-1;while(first<=last){if(*first!=*last){return false;}first++;last--;}return true;}int main(){char*str1="madam";char*str2="madaam";cout<<isPalindrome(str1,5)<<endl;cout<<isPalindrome(str2,6)<<endl;return 0;}
解法二
上述解法一从两头向中间扫描,那么是否还有其它办法呢?我们可以先从中间开始、然后向两边扩展查看字符是否相等。参考代码如下:
#include<iostream>#include<cstring>using namespace std;bool isPalindrome(char *s,int n){if(s==NULL||n<1){return false;}char* middle1;char* middle2;int m;m=(n/2-1)>=0?(n/2-1):0;middle1=s+m;middle2=s+n-m-1;while(middle1>=s){if(*middle1!=*middle2){return false;}middle1--;middle2++;}return true;}int main(){char*str1="madam";char*str2="madaam";cout<<isPalindrome(str1,5)<<endl;cout<<isPalindrome(str2,6)<<endl;return 0;}
0 0
- 第四章_回文判断
- <Python基础教程>_第四章_总结
- 操作系统_第四章_虚拟存储器
- 学习笔记_第四章
- 判断回文
- 回文判断
- 判断回文
- 判断回文
- 回文判断
- 回文判断
- 判断回文!
- 判断回文
- 回文判断
- 判断回文
- 回文判断
- 回文判断
- 判断回文
- 回文判断
- 关于ExpandableListView的一个小例子
- 分配连续物理内存的原因
- UVA 10130 SuperSale 动态规划
- Android Handler、Message完全解析,带你从源码的角度彻底理解
- Javascript中最常用的55个经典技巧
- 第四章_回文判断
- 为什么会找不到D层文件?
- 倒水问题学习小记 Poj 1606 + 3414 + Hdu 1495 + UVA 10603
- 第六次练习赛解题报告及标程
- 一个好的libpcap例子
- 由localhost:8080直接进入指定项目
- VMWare三种工作模式
- 函式库管理:ldconfig 与 /etc/ld.so.conf 以及 ldd
- android Standard Broadcast Actions 的对比和锁屏前后的测试