回文字符串判断---递归实现
2013-08-30 11:16
323 查看
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”
题目:判断一个字符串是否为回文
解法:递归
递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决
问:如何缩少问题规模?
答:通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。
新问题与原问题有着相同的形式
当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文。
递归的结束需要简单情景
1. 字符串长度可能会奇数或偶数:
如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文
2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查
程序二:
原文链接:http://blog.csdn.net/cbs612537/article/details/8217425
题目:判断一个字符串是否为回文
解法:递归
递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决
问:如何缩少问题规模?
答:通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。
新问题与原问题有着相同的形式
当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文。
递归的结束需要简单情景
1. 字符串长度可能会奇数或偶数:
如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文
2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查
#include <iostream> #include <string> using namespace std; int strhui(int low,int high,string str,int length); int main() { string str; cout<<"please int a string."<<endl; cin>>str; int length = str.length(); int result; if(result == 1) cout<<"yes!"<<endl; else cout<<"NO"<<endl; return 0; } int strhui(int low,int high,string str,int length) { if((length == 1) || (length ==0 )) { return 1; } if(str[low] != str[high]) return 0; return strhui(low+1,high-1,str,length-2); }
程序二:
#include <stdio.h> #include <string.h> void huiwen(char str[]) { int i,len; bool flag = true; len=strlen(str); for(i=0;i<len/2;i++) { if(str[i]!=str[len-i-1]) { flag=false; break; } } if(flag == false) printf("%s 不是一个回文数\n",str); else printf("%s 是一个回文数\n",str); } void main() { char str[100] = {0}; printf("Input a string:");/*提示Input a string:*/ scanf("%s", str); /*scanf()函数输入一个字符串:*/ huiwen(str); getchar(); }
原文链接:http://blog.csdn.net/cbs612537/article/details/8217425
相关文章推荐
- 用递归实现判断一个字符串是否是回文的方法
- Python用递归实现回文字符串的判断
- 递归实现回文字符串判断
- 用递归实现判断一个字符串是否是回文的方法
- 【java】java实现回文判断,递归实现
- 递归学习(一)--判断回文字符串
- 递归判断一个字符串是否回文
- 递归入门:判断回文字符串
- 递归实现回文判断(如:abcdedbca就是回文)
- Java实现回文字符串判断
- 算法:实现链表存储的回文字符串判断
- 递归实现回文判断(如:abcdedcba就是回文)
- java判断回文字符串几种简单的实现
- 递归--阶乘/斐波那契数列/判断回文字符串/字符串翻转
- 【字符串处理算法】回文判断的算法设计及C代码实现
- 判断字符串是否为回文 python实现
- 用递归判断回文字符串 .
- 递归实现回文判断
- 14、JAVA 判断一个数/字符串是不是回文?实现字符串的逆序,如“abcd”变成“dcba”
- c++实现字符串回文判断