码迷,mamicode.com
首页 > 其他好文 > 详细

用递归判断字符串是否为回文

时间:2020-01-05 14:05:53      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:nbsp   style   字符数组   输出   返回   ann   util   inf   public   

程序基本思路:

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

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

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

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

import java.util.Scanner;

public class Huiwen {
    static char []a=new char[1000];
    static String str;
    static int f=0;
    static int n=0;
    static Scanner sc=new Scanner(System.in);
    public static void main(String[] args) {
        str=sc.nextLine();
        a=str.toCharArray();
        huiWen(a,n);
        if(f==0) {
            System.out.println(str+" : "+"不是回文序列");
        }
        else {
            System.out.println(str+" : "+"是回文序列");
        }
    }
    public static void huiWen(char[] a,int n) {
        if(a.length==1||a.length==0) {
            f=1;
            return ;
        }
        if(a.length-2*n-1==1) {
            f=1;
            return ;
        }
        if(a.length-2*n-1==2) {
            if(a[n]==a[a.length-n-1]) {
                f=1;
                return ;
            }
            else {
                f=0;
                return ;
            }
        }
        
        if(a[n]==a[a.length-n-1]) {
            n=n+1;
            huiWen(a,n);
            
        }
        else {
            f=0;
            return ;
        }
        
    }

}

测试结果

技术图片

 

 技术图片

 

 技术图片

总结

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

2.递归要调用自身

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

用递归判断字符串是否为回文

标签:nbsp   style   字符数组   输出   返回   ann   util   inf   public   

原文地址:https://www.cnblogs.com/xk1013/p/12151928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!