判斷一個字符串是否爲迴文字符串—Java實現

簡單字符串判斷(只考慮包括字母,數字的字符串):

迴文定義:“迴文字符串”就是正讀倒讀都一樣的字符串。如字符串“Abcd121dcba” 是一段迴文字符串。

實現方法:將字符串分成兩部分並轉換爲字符數組,從字符串數組的兩端逐個進行比較。

實現代碼:

public class Demo {
	public static void main(String[] args) {
		String str="Abcd121dcba";
		//將字符串的所有大寫字母轉換成小寫字母
		str=str.toLowerCase();
		System.out.print(isPalindrome(str));
	}
	public static boolean isPalindrome(String str) {
		int length=str.length();
		for(int i=0;i<length/2;i++) {
			if(str.toCharArray()[i]!=str.toCharArray()[length-i-1]) {
				return false;
			}
		}
		return true;
	}
}

複雜字符串判斷(考慮字符串包括字母,數字,標點符號等類型字符):

迴文定義:“迴文字符串”就是正讀倒讀都一樣的字符串,字符串可能包括字母,數字,標點符號等類型字符。如“A man, a plan, a canal: Panama” 是一段迴文字符串。

實現方法:從字符串的兩端逐個進行比較,若遇到非字母或數字字符則將索引值加一或減一,如果兩端字符不同,直接返回false,直到索引值在中間相遇也沒有返回false則證明該字符串是迴文字符串。

實現代碼:

public class Demo {
	public static void main(String[] args) {
		String str="A man, a plan, a canal: Panama";
		System.out.print(isPalindrome(str));
	}
	public static boolean isPalindrome(String str){
	    int start = 0;
	    int end = str.length() - 1;
	    //將字符串的所有大寫字母轉換成小寫字母
	  	str=str.toLowerCase();
	    //從字符兩端分別逐個對比字符,不同則直接返回false
	    while (start < end){
	        //過濾掉非字母和數字字符
	        while (!(str.charAt(start) >= 'a' && str.charAt(start) <= 'z' || str.charAt(start) >= '0' && str.charAt(start) <= '9'))
	            start++;
	        //過濾掉非字母和數字字符
	        while (!(str.charAt(end) >= 'a' && str.charAt(end) <= 'z' || str.charAt(end) >= '0' && str.charAt(end) <= '9'))
	            end--;
	        //若字符不同,則直接返回false
	        if(str.charAt(start) != str.charAt(end))
	            return false;
	        start++;
	        end--;
	    }
	    return true;
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章