判斷其是否為一個迴文串,java實現
阿新 • • 發佈:2019-01-27
給定一個字串,判斷其是否為一個迴文串。只包含字母和數字,忽略大小寫。
您在真實的面試中是否遇到過這個題? Yes
樣例
"A man, a plan, a canal: Panama" 是一個迴文。
"race a car" 不是一個迴文。
注意
你是否考慮過,字串有可能是空字串?這是面試過程中,面試官常常會問的問題。
在這個題目中,我們將空字串判定為有效迴文。
挑戰
O(n) 時間複雜度,且不佔用額外空間。
A man, a plan, a canal: Panamapackage 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 }
amanaplanacanalpanama
true