java實現簡單回文算法


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM