java实现简单回文算法
算法要求
编写一个程序,判断一个字符串是否为“回文”。回文串:字符串字符从前往后与从后往前一致(中心对称)。
算法思路
首先将字符串等分左右两块,然后依次对称比较每一对字符是否相同
代码实现
import java.util.Scanner;
public class Palindrome {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (!sc.hasNext("###")) {
String data = sc.next();
if (isPalin(data)) {
System.out.println("yes");
} else {
System.out.println("no");
}
}
sc.close();
}
public static boolean isPalin(String data) {
int len = data.length();
for (int i = 0; i < len/2; i++) {
if (data.charAt(i) != data.charAt(len-1-i)) {
return false;
}
}
return true;
}
}
测试样例
abc
no
qwq
yes
abcdcba
yes
小知识
1、equals和==
==运算符执行规则
- 如果是基本数据类型的变量,则比较他们的值
- 如果是引用类型的变量,则比较他们所指向的对象的地址
equals方法执行规则
- 原始的equals方法,比较的是引用类型的变量所指向的对象的地址
- String、Date等类对equals方法进行了重写,此时比较的是所指向的对象的内容
ps:equals方法是基类Object中的方法,用来比较两个对象的引用是否相等,即是否指向同一个对象
探究:浅谈Java中的equals和== https://www.cnblogs.com/dolphin0520/p/3592500.html
2、sc.hasNext()实现多组输入
!sc.hasNext("###") // 匹配 ### 返回true,然后取非运算。即以 ### 作为停止输入的命令
hasNext()和next()效果其实是一样的,系统都会等待输入下一个字符,只是返回值不同,hasNext()返回true,next()返回输入的字符。如果hasNext()有参数则当下一个字符与参数值匹配时才会返回true。
探究:Scanner的hasNext()方法 https://blog.csdn.net/gao_zhennan/article/details/80562548