zoukankan      html  css  js  c++  java
  • 回文字符串判断---递归实现

    所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”

    题目:判断一个字符串是否为回文

    解法:递归

    递归的作用在于把问题的规模不断缩少,直到问题缩少到能简单地解决

    问:如何缩少问题规模?

    答:通过观察可以知道,一个回文字符串其中内部也是回文。所以,我们只需要以去掉两端的字符的形式一层层检查,每一次的检查都去掉了两个字符,这样就达到了缩少问题规模的目的。

    新问题与原问题有着相同的形式

    当去掉两端字符后的字符串,其产生的新问题同样是检查这个字符串是否回文。

    递归的结束需要简单情景

    1. 字符串长度可能会奇数或偶数:

    • 如果字符串长度是奇数,字符串会剩下最中间那位字符,但其不影响回文。当检查到长度为1的时候即代表此字符串是回文
    • 如果字符串长度是偶数,当两端的字符串两两比较检查后不会剩下字符。即检查到长度为0的时候即代表此字符串是回文

    2. 如果检查到两端两个字符不相同。则说明此字符串不是回文,直接返回0,不需要继续检查

     1 #include <iostream> 
     2 #include <string>
     3 
     4 using namespace std;
     5 int strhui(int low,int high,string str,int length);
     6 
     7 int main()
     8 {         
     9     string str;        
    10     cout<<"please int a string."<<endl;        
    11     cin>>str;         
    12     int length = str.length();         
    13     int result;         
    14     if(result == 1)                 
    15         cout<<"yes!"<<endl;        
    16     else                 
    17         cout<<"NO"<<endl;        
    18     return 0; 
    19 }
    20 
    21 int strhui(int low,int high,string str,int length) 
    24 {         
    25     if((length == 1) || (length ==0 ))         
    26     {                 
    27         return 1;        
    28     }        
    29     if(str[low] != str[high])               
    30         return 0;        
    31     return strhui(low+1,high-1,str,length-2);
    32 }

    程序二:

     1 #include <stdio.h>
     2 #include <string.h>
     3 
     4 void huiwen(char str[])
     5 {
     6     int i,len;
     7     bool flag = true;
     8     len=strlen(str);
     9     for(i=0;i<len/2;i++)
    10     {
    11         if(str[i]!=str[len-i-1])
    12         {
    13             flag=false;
    14             break;
    15         }
    16     }
    17     if(flag == false)
    18         printf("%s 不是一个回文数
    ",str);
    19     else
    20         printf("%s 是一个回文数
    ",str);
    21 }
    22 
    23 void main()
    24 {   
    25     char str[100] = {0};     
    26     printf("Input a string:");/*提示Input a string:*/
    27     scanf("%s", str);      /*scanf()函数输入一个字符串:*/
    28     huiwen(str);
    29     getchar();
    30 }

    原文链接:http://blog.csdn.net/cbs612537/article/details/8217425

  • 相关阅读:
    MapReduce在MES中的应用
    【VIPM技巧】多版本LabVIEW无法连接问题
    【LabVIEW技巧】你可以不懂OOP,却不能不懂封装
    【LabVIEW技巧】代码块快速放置
    工作中那些提高你效率的神器(第二篇)_Listary
    工作中那些提高你效率的神器(第一篇)_Everything
    LabVIEW 吸星大法
    LabVIEW 吸星大法
    LabVIEW 吸星大法
    有哪些LabVIEW快捷键让你相见恨晚
  • 原文地址:https://www.cnblogs.com/followyourdream/p/3291035.html
Copyright © 2011-2022 走看看