Java实验--关于简单字符串回文的递归判断实验
首先题目要求写的是递归的实验,一开始没注意要求,写了非递归的方法。浪费了一些时间,所谓吃一堑长一智。我学习到了以后看实验的时候要认真看实验中的要求,防止再看错。
以下是对此次的实验进行的分析:
1)递归是运用到了栈的思想
2)回文是一段从中间开始倒置的文字,回代的过程中出现不同的符号的时候就说明这段文字不是回文了
根据上面对回文判断的分析,就拿最简单的121来说,要每个字符判断直至2所在的位置,然后依次回代判断前面的1和后面的1的位置(上述的描述就类似于栈的思想)。
有关于栈还有递归其实我并不熟悉,所以此次的实验对我来说算是一次挑战吧。
接下来贴出实验的代码(利用递归实现回文的判断):
package huiwen; import java.util.Scanner; public class Huiwen {
public static void main(String arg[])
{
String sz=new String();
Scanner scan=new Scanner(System.in);
while(!sz.equals("-1"))
{
System.out.println("-------------------------------------\n请输入一个字符串判断是不是回文(输入-1结束输出):");
if(scan.hasNext())
{
sz=scan.next();
if(sz.equals("-1"))
break;
}
if(isHuiwen(sz,0)) //给递归一个起点直至字符串的中间,并判断中途有没有不等的情况,如果出现中途不等返回false,反之返回true
System.out.println("该字符串是回文\n");
else System.out.println("该字符串不是回文\n");
}
scan.close();
System.out.println("结束判断");
}
public static boolean isHuiwen(String s,int n)
{
int num=s.length();
if(num/2!=n)
{
if(isHuiwen(s,n+1))
{
if(s.charAt(n)==s.charAt(num-n-1))
return true;
else return false;
}
}
else if(s.charAt(n)==s.charAt(num-n-1))
return true;
return false;
}
}
回文的实验截图,在判断的过程中没有错误。
测试图如上所示
但是实验过程,一开始的时候再写递归的时候出现了一些问题,在调用isHuiwen方法的过程中,出现了一直都显示不是回文的情况。然后我对实验中为何会出现这种错误进行了分析,发现原来在判断的过程中由于在递归调用方法的前面加了一条判断语句,就是本来的num/2!=n错误的写成了num/2==n,这种错误是致命的,说明了我对于递归方面的基础还不行,所以对递归函数还得进一步了解。
Java实验--关于简单字符串回文的递归判断实验的更多相关文章
- Java之递归方法的字符串回文问题
日期:2018.10.12 星期五 博客期:018 题目: 题目分析:本题目因为是要求用递归的,所以大类里就写一个递归方法,在主方法里用字符串调用这个方法就好了!这是大致这个类的框架定位,然后定位我们 ...
- C#进行回文检测,判断字符串是否是回文的代码
下面代码内容是关于C#进行回文检测,判断字符串是否是回文的代码,应该是对各位朋友有些好处. Console.WriteLine("算法1:请输入一个字符串!");string st ...
- Java实现 洛谷 P1015 回文数(N进制回文数)
输入输出样例 输入样例#1: 10 87 输出样例#1: STEP=4 import java.util.Scanner; public class 回文数2 { public static void ...
- Java实现 LeetCode 680 验证回文字符串 Ⅱ(暴力)
680. 验证回文字符串 Ⅱ 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True 示例 2: 输入: " ...
- 【2018.07.28】(字符串/回文串)学习Manacher算法小记
主要是应用在回文串啦,原理也理解了老半天,如果没有图片的话,我也看不太懂它的原理 学习的灵感来源来自于:https://segmentfault.com/a/1190000008484167 /* 最 ...
- 纪念逝去的岁月——C/C++字符串回文
判断字符串是否是回文: 1. 输入:hello world dlrow olleh 输出:1 2. 输入:nihao hello 输出:0 代码 #include <stdio.h> #i ...
- Codeforces Gym100543G Virus synthesis 字符串 回文自动机 动态规划
原文链接https://www.cnblogs.com/zhouzhendong/p/CF-100543G.html 题目传送门 - CF-Gym100543G 题意 你可以对一个字符串进行以下两种操 ...
- 字符串-回文-Manacher算法
http://blog.csdn.net/zzkksunboy/article/details/72600679 https://segmentfault.com/a/1190000008484167 ...
- 【Python】【demo实验32】【回文数的确认】
原题: 我的代码: #!/usr/bin/python # encoding=utf-8 # -*- coding: UTF-8 -*- #判断一个数字是否为回文数 即 12345654321 x = ...
随机推荐
- vijos 1053 Easy sssp
描述 输入数据给出一个有N(2 <= N <= 1,000)个节点,M(M <= 100,000)条边的带权有向图. 要求你写一个程序, 判断这个有向图中是否存在负权回路. 如果从一 ...
- Docker 启动时报错:iptables:No chain/target/match by the name
重新启动docker后,就好了. service docker restart
- IoC简介
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来降低程序代码之间的耦合度.其中最常见的方式叫做依赖注入(Dependency Injecti ...
- JavaEE-05 分页与文件上传
学习要点 新闻分页显示数据 新闻图片上传 JSP分页显示数据 分页 数据信息较多的的时候一般采用列表显示,方便展示信息: 数据量较大的时候一般采用列表加分页的方式显示,便于阅读. 分页方式:集合或者s ...
- 【传智播客】Libevent学习笔记(二):创建event_base
目录 00. 目录 01. 简介 02. 创建默认的event_base 03. 创建复杂的event_base 3.1 event_config_new函数 3.2 event_base_new_w ...
- java中的缓存技术该如何实现
1缓存为什么要存在?2缓存可以存在于什么地方?3缓存有哪些属性?4缓存介质? 搞清楚这4个问题,那么我们就可以随意的通过应用的场景来判断使用何种缓存了. 1. 缓存为什么要存在?一 般情况下,一个网站 ...
- github 新建一个仓库后
每次都记不住命令,记一下,防止找不到 echo "# learn18" >> README.md git init git add README.md git comm ...
- 用css实现html中单选框样式改变
我们都知道,input的单选框是一个小圆框,不能直接更改样式.但是我们在很多网页中看到的单选框样式可不仅限于默认的那个样式(看上去没啥新意,也比较丑).那么,接下来我将介绍下如何实现该功能. 首先, ...
- windows图标变空白解决方案
背景 对磁盘软件路径进行规整,把磁盘不同类型软件进行分类存储后,部分软件在windows桌面为空白,有些在start menu不为空白但是发送至桌面后却变成空白 解决方法 工具:search ever ...
- docker快速搭建
curl -sSL https://get.docker.com|sh docker --version systemctl start docker.service ps -ef|grep doc ...