双指针验证回文
双指针
- 双指针包含快慢指针和首尾指针等等用法,本文主要讲解首尾指针的用法
例题(验证回文串)
-
题目:
-
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
-
思路:
1.设置左右双指针(即首尾指针),向中间判断;
2.跳过非数字字母的字符
3.将字母全部转换为小写字母后判断 -
伪代码
1.初始化定义双指针
2.while(i < j){
1>.左->右 过滤
2>.右->左 过滤
3>.全部转为小写字母进行判断,只要遇到不符合的(即不相等),直接返回false
4>.双指针移动,继续循环
}
3.没有返回false,即满足回文条件,返回true -
代码
class Solution {
public boolean isPalindrome(String s) {
int i = 0,j = s.length()-1;
while(i < j){
while(i<j && !Character.isLetterOrDigit(s.charAt(i))) i++;
while(i<j && !Character.isLetterOrDigit(s.charAt(j))) j--;
if(Character.toLowerCase(s.charAt(i)) != Character.toLowerCase(s.charAt(j))) return false;
i++;
j--;
}
return true;
}
}
- Tips
1.Character.isLetterOrDigit():判断时字母或数字返回true,否则返回false;
2.Character.toLowerCase():将字符转换为小写字母
声明
- 原作者:E.L.E
- <本文章著作权归作者所有,商业转载请获得作者授权,非商业转载请注明出处>
- <欢迎大家评论>