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,方法的类型选择是根据实际情况来判断的,不是想写什么就写什么,看哪个用的多就用哪个。

2019.9.23JAVA课堂测试的更多相关文章

  1. 课堂测试_WEB界面链接数据库

    课堂测试_WEB界面链接数据库 一,题目: 一. 考试要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求 ...

  2. 耿丹CS16-2班课堂测试作业汇总

    Deadline: 2016-11-01 11:59 作业内容 课堂测试作业总结 00.题目得5分,多半扣在格式上,有些同学代码写得很过分,已经很仁慈对待,同学们珍惜之: 01.界面设计得分不好,换行 ...

  3. 课堂测试ch06

    课堂测试ch06 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A. 1 B. 1/4 C. 1/2 D. 3/4 解析:在填充了之后,对于x和y数组,只有在引用 ...

  4. 20155306 2017-2018-1《信息安全系统设计》第二周课堂测试以及myod的实现

    20155306 2017-2018-1<信息安全系统设计>第二周课堂测试以及myod的实现 第二周课堂测验: (注:前两项在课堂已提交,在此不做详解) 第一项: 每个.c一个文件,每个. ...

  5. 『2019/3/19 USACO测试 反思与总结』

    2019/3/8 USACO测试 这是第三次考试了,不过这一次没有上一次考得好,也算是比较失误的,有一道题思路对但是写挂了. 还是看一下试题安排: 题号 试题分组 考察算法 思维难度 代码难度 1 银 ...

  6. 『2019/3/8 USACO测试 反思与总结』

    2019/3/8 USACO测试 这一次是到高中的第一次考试,考得不太好,原因有很多. 先看一下试题安排: 题号 试题分组 考察算法 思维难度 代码难度 1 金组\(T1\) 建图+最短路 ★★★ ★ ...

  7. 课堂测试——jsp登录界面设计

    实现结果:在login.jsp页面提交用户名和密码(可以验证是否为空),点击登录跳转到loginResult.jsp页面进行验证并显示结果 JSP + JDBC + MySQL login.jsp 设 ...

  8. 20172306 2018-2019《Java程序设计与数据结构课堂测试补充报告》

    学号 2017-2018-2 <程序设计与数据结构>课堂测试补充报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 刘辰 学号:20172306 实验教师:王志强 必 ...

  9. 20175316盛茂淞 《java程序设计》第三周课堂测试错题总结

    20175316盛茂淞 <java程序设计>第三周课堂测试错题总结 出现问题 错题总结 题目1 在Ubuntu中用自己的有位学号建一个文件,教材p87 Example4_15 1. 修改代 ...

随机推荐

  1. springboot - 应用实践(1)认识springboot

    1.为什么要推出springboot springboot设计的目的是用来简化新spring应用的初始搭建以及开发过程.springboot遵循“约定优于配置”原则. 2.springboot默认的配 ...

  2. 写 JSP 的痛点,真的非常痛!

    一.前戏 前后端分离已成为互联网项目开发的业界标准使用方式,通过nginx+tomcat的方式(也可以中间加一个nodejs)有效的进行解耦,并且前后端分离会为以后的大型分布式架构.弹性计算架构.微服 ...

  3. CF 11D A Simple Task 题解

    题面 这道题的数据范围一看就是dfs或状压啦~ 本文以状压的方式来讲解 f[i][j]表示目前的节点是i,已经经历过的节点的状态为j的简单环的个数: 具体的转移方程和细节请看代码: PS:(i& ...

  4. Luogu P3953 [NOIP2017]逛公园

    题目 首先我们跑出从\(1\)出发的最短路\(d1\)和反图上从\(n\)出发的最短路\(dn\). 然后我们处理出长度不超过\(d1_n+k\)的最短路边集,给它拓扑排序. 如果存在环,那么这个环一 ...

  5. Makefile中include、-include、sinclude

    include.-include.sinclude使用 在 Makefile 使用 include 关键字可以把别的 Makefile 包含进来,这很像 C 语言的#include,被包含的文件会原模 ...

  6. MyBatis的Insert操作详解

    一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ,入参的全 ...

  7. Bootstrap中DropDown插件显示下拉列表,点击下拉列表区域,不会再自动关闭。

    目标: Bootstrap中DropDown插件显示下拉列表,点击下拉列表区域,不会再自动关闭. 参考:http://v3.bootcss.com/javascript/#dropdowns    / ...

  8. mysql小数和类型转换函数

    保留两位小数 SELECT ROUND( 123456789.3563898,2),TRUNCATE(123456789.3563898,2),FORMAT(123456789.3563898,2); ...

  9. thinkphp5+layui多图片上传

    准备资料 下载layui <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  10. 使用 supervisor 管理 Celery 服务

    使用 supervisor 管理 Celery 服务 Celery 后台运行 如果我们想让celery worker运行在后台而不是终端上,在后台以守护进程的方式运行,我们可以使用supervisor ...