1. 程式人生 > >判斷其是否為一個迴文串,java實現

判斷其是否為一個迴文串,java實現

給定一個字串,判斷其是否為一個迴文串。只包含字母和數字,忽略大小寫。

您在真實的面試中是否遇到過這個題? Yes
樣例
"A man, a plan, a canal: Panama" 是一個迴文。

"race a car" 不是一個迴文。

注意
你是否考慮過,字串有可能是空字串?這是面試過程中,面試官常常會問的問題。

在這個題目中,我們將空字串判定為有效迴文。

挑戰
O(n) 時間複雜度,且不佔用額外空間。
package huiwenchuan_1;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		String str = input.nextLine();
		System.out.println(isHuiWen(str));
	}

	public static boolean isHuiWen(String s) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < s.length(); i++) {
			if (Character.isLetter(s.charAt(i))
					|| Character.isDigit(s.charAt(i))) {
				sb.append(s.charAt(i));

			}
		}
		String str2 = sb.toString().toLowerCase();
		System.out.println(str2);
		sb.delete(0, sb.length());
		for (int j = 0; j <= (str2.length() + 1) / 2 - 1; j++) {//如果長度是8,j<=3,最後一次比較的兩個字元分別是s[3]和s[4];如果長度是9,j<=4,最後一次比較的兩個字元都是s[4]
			sb.append(str2.charAt(j) == str2.charAt(str2.length() - 1 - j));

		}// for
		return !sb.toString().contains("f");

	}// /isHuiWen

}
A man, a plan, a canal: Panama
amanaplanacanalpanama
true