`
frank-liu
  • 浏览: 1683822 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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.

原问题链接:https://leetcode.com/problems/valid-palindrome/

 

问题分析

  在这个问题里,因为要判断给定的字符串是否为回文。一开始就有几个初始条件需要判断。比如说如果s本身长度为0,应该返回true。

  而在实现里,我们还要考虑其他字符的情况。比如说不是给定的普通字符和数字,这些我们就应该跳过去。所以我们应该定义两个变量l, r。其中l = 0, r = s.length() - 1。分别表示字符串的两头。然后通过循环不断遍历和比较。如果碰到其中l, r同时为合法字符的情况下,但是两者不想等的话,就返回false。否则在循环结束后返回true。在比较两个字符的时候,我们要考虑到大小写的情况,需要将它们转换成同样的大写或者小写样式再来比较。

  详细的代码实现如下:

 

public class Solution {
    public boolean isPalindrome(String s) {
        if(s == null || s.isEmpty()) return true;
        int l = 0, r = s.length() - 1;
        while(l < r) {
            char lch = s.charAt(l), rch = s.charAt(r);
            if(!isValidChar(lch)) l++;
            else if(!isValidChar(rch)) r--;
            else if(Character.toLowerCase(lch) == Character.toLowerCase(rch)) {
                l++;
                r--;
            }
            else return false;
        }
        return true;
    }
    
    private boolean isValidChar(char c) {
        char ch = Character.toLowerCase(c);
        return Character.isLetterOrDigit(c);
    }
}

 

1
8
分享到:
评论

相关推荐

    javalruleetcode-LeetCode:LeetCode算法问题

    Palindrome LeetCode 167 Two Sum II - Input array is sorted LeetCode 344 Reverse String LeetCode 345 Reverse Vowels of a String 2 字符串 编号 题目 LeetCode 3 Longest Substring Without Repeating ...

    leetcode卡-LeetCode:LeetCode题解

    Palindrome :star: 有效回文,小写字母转换 0005 Longest Palindromic Substring :star: :star: :star: 最长回文子串,Manacher算法 0010 RegularExpressionMatching :star: :star: :star: 正则表达式匹配,dp 0012 ...

    leetcode中国-leetcode:leetcode刷题

    Palindrome Implement strStr() String to Integer (atoi) addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方图的最大面积,左右两次扫面+剪枝优化 Valid Parentheses 用栈...

    Leetcode:我的LeetCode解决方案

    此外,LeetCode还有许多关于字符串操作的问题,如“Valid Palindrome”或“Reverse String”。Java的String类提供了丰富的API,但处理字符串时需注意其不可变性,有时需要使用StringBuilder或StringBuffer进行高效...

    leetcode分类-leetcode:leetcode刷题(中等难度分类)

    字符串处理题目也是LeetCode的重要部分,例如"Reverse Words in a String"(翻转字符串中的单词)和"Valid Palindrome"(验证回文串)。这些题目通常涉及到字符串的遍历、分割、比较以及特殊字符的处理。 四、位...

    LeetCode:LeetCode题解

    LeetCode LeetCode题解 传送门 # 标题 解决方案 困难 笔记 1个 简单的 3 ... Valid_Palindrome Java 简单的 136 单号 Java 简单的 137 Single_NumberII Java 中等的 167 Two_Sum_II_Input_

    LeetCode:LeetCode上一些算法的解答

    3. **栈和队列**:栈(Last In First Out, LIFO)和队列(First In First Out, FIFO)是两种基础数据结构,常见题目如"有效的括号"(Valid Parentheses)用栈来检查括号匹配,"最短回文串"(Shortest Palindrome)则...

    leetcodepython001-LeetCode:力码

    leetcode Python 001 力码 简单的 # 问题 完成日期 语 001 001_Two_Sum 2021 年 1 月 5 日 Python 002 007_Reverse_Integer 2021 年 1 月 7 日 Python 003 009_Palindrome_Number 2021 年 1 月 7 日 Python 004 013_...

    lrucacheleetcode-leetcode:leetcode

    Palindrome Number 11. Container With Most Water 12. Integer to Roman 13. Roman to Integer 14. Longest Common Prefix 15. 3Sum 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate Parentheses ...

    leetcode题库-LeetCode:力码

    Palindrome Number.cpp 12 整数转罗马数字 Integer to Roman.cpp 13 罗马数字转整数 Roman to Integer.cpp 15 三数之和 3Sum.cpp 最接近的三数之和 3Sum Closest .cpp 20 有效的括号 Valid Parentheses.cpp 22 括号...

    leetcode卡-leetcode:利特码解决方案

    Valid Sudoku linked list Palindrome linked list Linked List Cycle trees Convert Sorted Array to Binary Search Tree string and search First Bad Version Dynamic Programing *** Climbing Stairs Set Matrix...

    leetcode双人赛-LeetCode:力扣笔记

    leetcode双人赛LeetCode 编号 题目 难度 题型 备注 Two Sum 简单 Add Two Numbers 中等 链结串列 重要 Longest Substring Without Repeating Characters 中等 字串 重要 Median of Two Sorted Arrays 困难 数学 ...

    python-leetcode题解之125-Valid-Palindrome

    python python_leetcode题解之125_Valid_Palindrome

    js-leetcode题解之125-valid-palindrome.js

    javascript js_leetcode题解之125-valid-palindrome.js

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手熟悉语言,但是LeetCode OJ里面只有几门主流语言的... "valid_palindrome.erl" 个人认为dungeon_game这个题目解题逻辑很体现erlang的函数式的思维逻辑

    leetcode516-Lcode:代码

    leetcode 516 8/13 - 8/18 周:leetcode#: ...Valid Palindrome 28. Implement strStr() 5. Longest Palindromic Substring option: 516. Longest Palindromic Subsequence string replacement strStr II 链接:

    LeetCode最全代码

    # [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...

    LeetCode_java_leetcode_刷题_

    3. **字符串处理**:Java中的String类是常考主题,如"Valid Palindrome"要求判断一个字符串是否为回文,这涉及字符串的反转和比较操作。 4. **排序与查找**:快速排序、归并排序、二分查找等经典算法经常出现在...

    Leetcode book刷题必备

    4. Valid Palindrome:判断一个字符串是否是回文,忽略大小写和非字母数字字符。 5. Implement strStr():实现字符串查找功能,返回子字符串在字符串中的起始索引。 6. Reverse Words in a String:翻转字符串中的...

    leetcode不会-ValidPalindrome:这是我在Python中针对LeetCode上的ValidPalindrome问题的解决方

    Valid Palindrome 问题的解决方案。 首先,我将给定字符串中的所有字符都小写,这样就不会有任何违规行为。 然后我创建两个空数组。 在一个数组中,我将给定字符串的所有字母数字值附加到该数组中。 在第二个中,我...

Global site tag (gtag.js) - Google Analytics