簡單字符串判斷(只考慮包括字母,數字的字符串):
迴文定義:“迴文字符串”就是正讀倒讀都一樣的字符串。如字符串“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;
}
}