zoukankan      html  css  js  c++  java
  • 课堂练习判断字符串是否为回文序列

    一、题目:判断输入的字符串是否为回文系列。

    二、程序基本思路:

    1.首先判断若字符串的长度为0或1,如果是,则这个字符串是回文序列,程序直接结束

    2.若字符串长度大于1,先将字符串转化成字符数组,定义旗帜flag、字符数组头和尾标识,将字符数组首地址和以上定义传给递归方法

    3.用头尾标记数组头尾字符来进行一一比较,如果一致,继续递归调用自身,直至达到递归终止条件。如果中途有不匹配的,返回输出字符串不是回文序列。

    递归终止条件为头尾标记相等或相差为1,返回输出字符串是回文序列。

    三. 程序源代码

     1 import java.util.Scanner;
     2 
     3 public class panduanhui {
     4      static char []a=new char[1000];
     5      static String str;
     6      static int flag=0;
     7      static int i=0;
     8      static int k=0;
     9     public static void main(String[] args) {
    10       Scanner  input=new Scanner(System.in);
    11       System.out.println("请输入一个字符串:");
    12        str=input.nextLine();
    13      //把字符串变成一个字符数组
    14        a=str.toCharArray();
    15        k=a.length;
    16        int flag1=0;
    17        if(a.length==1||a.length==0) 
    18        {
    19            System.out.println("字符串"+str+"是回文序列");  
    20        }
    21        else {
    22        huiwenpanduan(a,i,k);
    23        flag1=1;
    24        }
    25        if(flag1==1)
    26        {
    27         //判断输出
    28        if(flag==0) {
    29            System.out.println("字符串"+str+"不是回文序列");
    30        }
    31        else {
    32            System.out.println("字符串"+str+"是回文序列");
    33        }
    34        }
    35 }
    36     //将字符数组作为参数传入方法中
    37     public static void huiwenpanduan(char[] a,int i,int k) {
    38         //首尾字符比较
    39         if(a[i]==a[k-1])
    40         {
    41             //标记前移
    42             i++;
    43             //标记后移
    44             k--;
    45             //递归终止条件
    46             if(k-i==1||k-i==2) {  
    47                 flag=1;
    48                 return ;
    49             }
    50         //递归调用自身
    51         huiwenpanduan(a,i,k);
    52         }
    53         //首尾字符不相同,不是回文序列,返回
    54         else {
    55             flag=0;
    56             return ;
    57         }     
    58     }
    59         
    60     }

    四、运行结果:

    五、总结

    1. 递归方法要明确递归终止条件

    2.递归要调用自身

    3.递归方法每次调用都要减小问题规模

  • 相关阅读:
    Timer Pattern
    la négation
    expression de la fréquence
    .NET 索引器
    JQuery.Gantt(甘特图) 开发指南
    .NET 预处理器指令
    .NET 数据类型之匿名类型(var)
    .NET base与this
    .NET using关键字
    .NET 基础语句
  • 原文地址:https://www.cnblogs.com/yang2000/p/11575561.html
Copyright © 2011-2022 走看看