【leetcode刷题笔记】Valid Palindrome

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.


 

题解:Using two pointers head and tail, head keeps moving forward till it points to an alpha or number; tail moves backward till it points to an alpha or number, then judge if what head points to equals what tail points, if it doesn't equal, return false; Else cotinue moving head and tail to compare characters bewteen them.

We also need a function isValid(char c) to judge if char c is a number or alpha.

The code is below:

复制代码
 1 public class Solution {
 2     private boolean isValid(char c){
 3         if(c >= 'a' && c <= 'z')
 4             return true;
 5         if(c >= '0' && c <='9')
 6             return true;
 7         
 8         return false;
 9     }
10     
11     public boolean isPalindrome(String s) {
12         s = s.toLowerCase();
13         
14         if(s == null || s.length() <= 1)
15             return true;
16         
17         int head = 0;
18         int tail = s.length() - 1;
19         
20         while(head < tail){
21             while(head < tail && !isValid(s.charAt(head)))
22                 head++;
23             while(tail > head && !isValid(s.charAt(tail)))
24                 tail--;
25             if(s.charAt(head) != s.charAt(tail))
26                 return false;
27             else {
28                 head++;
29                 tail--;
30             }
31             
32         }
33         
34         return true;
35     }
36 }
复制代码
posted @   SunshineAtNoon  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示