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