回文
回文是把相同的词汇或句子,在下文中调换位置或颠倒过来,产生首尾回环的情趣,叫做回文,也叫回环。比如1223221,121,22都是回文。
使用Java实现回文
package com.sc.test;
import javax.xml.soap.Node;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class test1 {
//定义一个静态方法
static public boolean isPa(String f,int n){
//判断如果字符串第一位与最后一位相等
if(f.charAt(0)==f.charAt(f.length()-1)) {
if(f.length()>2) {
return isPa(f.substring(n+1,f.length()-1),0);
}
else {
return true;
}
}
else return false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.println("请输入字符串:");
String f = scan.next();
if(isPa(f,0)) {
System.out.println("字符串:" + f + " 是回文串");
}
else {
System.out.println("字符串:" + f + " 不是回文串");
}
}
}
步骤解答:
- 先定义一个方法,返回值类型为boolean ,参数为字符串String 与 int ,假设传进去的字符串是12321
- 利用String的方法,判断字符串第一位与最后一位是否相等,不相等就直接返回false ,1 与1 比较相等
- 相等就继续判断字符串长度是否大于2 ,如果不大于2 就说明只有一个字符串,那就直接返回true,如果大于2 就说明字符串除了首尾两个字符中间还有其他字符
- 使用递归的方法,继续判断,当字符串长度大于2时 截取当前字符串第二位到尾部的最后一位(从n+1到(f.length()-1)-1),就相当于截取了232 ,那么再用开始的判断比较一下,比较后又是相等,并且字符串大于2 ,所以又截取,得到3 ,就一个字符了,不大于2 所以直接返回true,表示是一个回文。
总结:
此类算法较简单,主要考察String的一些基本方法,从字符串首尾字符比较是否相等,再截取内部字符串,又用到了递归 ,一层一层比较,最终获得答案。