LeetCode 0125 Valid Palindrome
阿新 • • 發佈:2022-05-18
1. 題目描述
2. Solution 1
1、思路分析
雙指標,head=0, tail=s.length()-1,逐步向中間靠近。期間只考慮合法字元(跳過非字母及非數字),當兩端都是合法字元時,均轉換為小寫字母進行比較,若不同則為非迴文;不然考慮下一組字元,直到兩個指標重合。
2、程式碼實現
package Q0199.Q0125ValidPalindrome; public class Solution { public boolean isPalindrome(String s) { if (s.isEmpty()) return true; int head = 0, tail = s.length() - 1; char cHead, cTail; while (head <= tail) { cHead = s.charAt(head); cTail = s.charAt(tail); if (!Character.isLetterOrDigit(cHead)) { head++; } else if (!Character.isLetterOrDigit(cTail)) { tail--; } else { if (Character.toLowerCase(cHead) != Character.toLowerCase(cTail)) return false; head++; tail--; } } return true; } }
3、複雜度分析
時間複雜度: O(n)
空間複雜度: O(1)