125. 验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
示例 1:
1 | 输入: "A man, a plan, a canal: Panama" |
示例 2:
1 | 输入: "race a car" |
提示:
1 <= s.length <= 2 * 105
- 字符串
s
由 ASCII 字符组成
题解:
解法1:反转
将字符串中的有效字符构建为一个新的字符串,将其反转,与原有字符串进行比较,若相等,则为回文串。
1 | //使用StringBuffer是为了方便调用API |
- 时间复杂度:O(N)
- 空间复杂度:O(N)
解法2:双指针
和解法一一样,首先将字符串中的有效字符取出,然后使用双指针进行前后比较向中间移动,直到两指针相遇。
1 | public boolean isPalindrome(String s) { |
- 时间复杂度:O(N)
- 空间复杂度:O(N)