2019.9.23JAVA课堂测试

1、题目

使用递归方式判断某个字串是否是回文( palindrome )

“回文”是指正着读、反着读都一样的句子。比如“我是谁是我”
使用递归算法检测回文的算法描述如下:
A single or zero-character string is a palindrome.
Any other string is a palindrome if the first and last characters are the same, and the string that remains, excepting those characters, is a palindrome.

2、程序源代码

import java.util.Scanner;
public class palindrome {
public static boolean deside(String s,int i) {//判断是否是回文串的函数
 if(s.charAt(0) == s.charAt(s.length() - 1)){//判断第一个字符和最后一个字符是否相等,包括长度为1,2的字符串
        if(s.length() > 2){//当长度为2以上时的情况
            return deside(s.substring(i+1,s.length()-1),0);//substring函数将字符串的首尾去掉,进行第二次判断
        }else return true;//返回true
    }else return false;//不满足条件返回false

public static void main(String[] args) {//主方法
 Scanner sc= new Scanner(System.in);
 String a = sc.nextLine();//输入字符串
 if(deside(a,0)){
        System.out.println("字符串 " + a + "是回文串");//值为真输出是回文串
    }else{
        System.out.println("字符串 " + a +"不是回文串");//值为假输出不是回文串
    }
    sc.close();//释放空间
}
}
3、设计思路:
利用递归实现回文串的判断,而回文串的定义是正着念反着念都是一样的,所以就能想出来判断方法,即第一个和最后一个字符相等,第2个和第n-1个字符相等,当第二次判断的时候,可以用substring分割字符串,获得删除首尾字符的新字符串,然后再次进行判断,但是中间可能剩一个或者两个,如果在判断就会更加麻烦,因此可以直接用(s.charAt(0) == s.charAt(s.length() - 1)判断,当剩一个字符的时候,也满足条件,当条件全部满足返回true,递归的时候满足条件,调用参数为新字符串的本身函数,一直到满足条件,输出true,否则输出false,并在主方法中输出是否为回文串,并且将判断的方法定义为boolean型,配合主方法进行输出。
4、运行截图:

 

5编程总结:要了解charAt(),substring()等方法的应用,并且在应用递归的时候,要清楚递归的条件,结束条件,并且要对方法的类型有深刻的了解,并不是void用的多就都是void,方法的类型选择是根据实际情况来判断的,不是想写什么就写什么,看哪个用的多就用哪个。

转载于:https://www.cnblogs.com/tkg1314/p/11583281.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值