前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LeetCode笔记:125. Valid Palindrome

LeetCode笔记:125. Valid Palindrome

作者头像
Cloudox
发布2021-11-23 14:20:41
3130
发布2021-11-23 14:20:41
举报
文章被收录于专栏:月亮与二进制月亮与二进制

问题:

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.

大意:

给出一个字符串,判断它是不是回文,只考虑大小写字母和数字,忽略大小写。 例子: "A man, a plan, a canal: Panama" 是回文。 "race a car" 不是回文。 注意: 你有考虑字符串可能为空吗?这是面试时的一个好问题。 对于这道题的目的,我们假设空字符串也是有效的回文。

思路:

又是一道判断回文的题目,不同的是这道题只判断字符串中的大小写字母和数字,从例子中也可以看出,空格和其他标点符号都跟没看到一样,也就是在做的时候要忽略,另外大小写字母忽略,看做是相同的,这也就意味着在判断是否相同时要将大小写字母转为同一个格式。

由于要先判断一个字符是不是数字或者大小写字母,我们做一个方法来专门检测这个事情,避免主体代码太冗长。

在主体代码中,我们用两个指针,一个从头开始遍历,一个从末尾开始遍历,当头尾都找到字母或者数字后,就进行对比是否是相同的,有不同说明不是回文,否则就是回文,在比较时我们将大写字母都转化成小写来对比,当然也可以反过来。

代码(Java):

代码语言:javascript
复制
public class Solution {
    public boolean isLetterOrDigit(char test) {
        if ((test - '0' >= 0 && test - '0' <= 9) || (test - 'a' >= 0 && test - 'a' <= 25) || (test - 'A' >= 0 && test - 'A' <= 25)) return true;
        else return false;
    }
    
    public boolean isPalindrome(String s) {
        if (s.length() == 0) return true;
        
        int i = 0;
        int k = s.length() - 1;
        
        while (i <= k) {
            char tempI = s.charAt(i);
            char tempK = s.charAt(k);
            
            if (!isLetterOrDigit(tempI)) i++;
            else if (!isLetterOrDigit(tempK)) k--;
            else {
                if (Character.toLowerCase(tempI) != Character.toLowerCase(tempK)) return false;
                else {
                    i++;
                    k--;
                }
            }
        }
        return true;
    }
}

合集:https://github.com/Cloudox/LeetCode-Record

查看作者首页

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/11/23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题:
  • 大意:
  • 思路:
  • 代码(Java):
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档