- 题目介绍:
“回文”是指正着读、反着读都一样的句子。比如“我是谁是我”使用递归算法检测回文的算法描述如下:
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.
- 设计思想:
1.判断字符串长度(n),当字符串长度为0跟1时即是回文。
2.若与1不符,则我们需要对字符串进行递归判断,即拿第(n-1)个字符,第a(length-n)个字符进行比较,若相同则n-1,再比较,如此循环往复,就会出现一个结束点。
3.结束点就是当n为0或为1,若这样即是回文。
4.递归进行的条件是:若第(n-1)个字符,第a(length-n)个字符相同,则将字符串长度-1,若不满足,则直接退出。
- 代码如下
package javatask; import java.util.Scanner; public class Palindrome { static Scanner in=new Scanner(System.in); static char str[] = new char[99]; public static void main(String [] args) { System.out.println("请输入字符串"); String a; a=in.next(); if(Palindrome(a,a.length()))//如果是回文 System.out.println("It's a palindrome"); else //如果不是回文 System.out.println("It's not a palindrome"); } static public boolean Palindrome(String a,int n) { int length=a.length(); if(n==1||n==0) return true; else { if (a.charAt(n-1)==a.charAt(length-n)) //第一个字符与最后一个字符比较 return Palindrome(a,--n);//利用递归反复判断 else return false;//不是回文 } } }
- 运行结果截图
- 编程总结分析
这道题比较困难的点呢就是怎么用递归来判断以及在字符串如何提取某个字符来操作。