转载自Leet
Code《剑指Offer》
题目描述
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1: >输入: "A man, a plan, a canal: Panama"
>输出: true
示例 2: >输入: "race a car"
>输出:
false
提示:
1 <= s.length <= 2 * 105
- 字符串
s
由 ASCII 字符组成
我的代码
\(T(N) = O(N)\), \(S(N) = O(1)\)
{.line-numbers}1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| class MySolution125 { public boolean isPalindrome(String s) { s = s.trim(); if (s==null||s.length()<=1) return true; for (int i=0, j=s.length()-1; i<j; ) { if (!Character.isLetterOrDigit(s.charAt(i))) { i++; continue; } else if (!Character.isLetterOrDigit(s.charAt(j))) { j--; continue; } else if (Character.isLetter(s.charAt(i))&&Character.isLetter(s.charAt(j))) { if (!(Character.toLowerCase(s.charAt(i))==Character.toLowerCase(s.charAt(j)))) return false; } else if (s.charAt(i)!=s.charAt(j)) return false; i++; j--; } return true; } }
|