`
bcyy
  • 浏览: 1818595 次
文章分类
社区版块
存档分类
最新评论

Valid Palindrome -- LeetCode

 
阅读更多
原题链接:http://oj.leetcode.com/problems/valid-palindrome/
这道题是判断一个字符串是不是回文串。因为只是看一个字符串,算法还是比较简单,就是从两头出发,往中间走,进行两两匹配。这里面的小问题就是在这个题目要求中,只判断字母和数字类型的字符,其他字符直接跳过即可。因此我们要写一个函数判断他是不是合法字符,而且因为忽略大小写,我们在判断两个字符是不是相同的时候如果是大写,要转成相应的小写字母。这个算法从两边扫描,到中间相遇,只需要一次线性扫描,复杂度是O(n),空间上是O(1)。代码如下:
public boolean isPalindrome(String s)
{
    if(s==null || s.length()==0)
        return true;
    int l = 0;
    int r = s.length()-1;
    while(l<r)
    {
        if(!isValid(s.charAt(l)))
        {
            l++;
            continue;
        }
        if(!isValid(s.charAt(r)))
        {
            r--;
            continue;
        }
        if(!isSame(s.charAt(l),s.charAt(r)))
        {
            return false;
        }
        l++;
        r--;
    }
    return true;
}
private boolean isValid(char c)
{
    if(c>='a' && c<='z' || c>='A' && c<='Z' || c>='0' && c<='9')
        return true;
    return false;
}
private boolean isSame(char c1, char c2)
{
    if(c1>='A' && c1<='Z')
        c1 = (char)(c1-'A'+'a');
    if(c2>='A' && c2<='Z')
        c2 = (char)(c2-'A'+'a');
    return c1==c2;
       
}
回文串的判断和搜索是面试中经常遇到的基本问题,我在Facebook的面试中就遇到了这道题。在LeetCode中类似的题目还有Palindrome NumberLongest Palindromic SubstringPalindrome Partitioning等,Palindrome Number跟这道题比较类似,只是判断的是整数,而后面两道还是有一定难度的,有兴趣的朋友可以看看哈。
分享到:
评论

相关推荐

    gasstationleetcode-leetcode-in-niuke:在牛客网上的在线编程中的leetcode在线编程题解

    gas station leetcode 在牛客网上的在线编程中的leetcode在线编程题解 代码中有详细题解 完成: 树 Minimum Depth of ...evaluate-reverse-polish-notation ...valid-palindrome 模拟 pascals-triangle 模拟 pasca

    gasstationleetcode-leetcode-rust:莱特代码休息

    leetcode 力码锈 问题 # 标题 命令 1 cargo run --bin 1-two-sum 2 cargo run --bin 2-add-two-numbers 3 cargo run --bin 3-longest-substring-without-repeating-characters 7 cargo run --bin 7-reverse-integer ...

    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-[removed]我对Leetcode问题的解决方案

    Palindrome Number 回文数 11 Container With Most Water 盛最多水的容器 13 Roman to Integer 罗马数字转整数 14 Longest Common Prefix 最长公共前缀 20 Valid Parentheses 有效的括号 26 Remove Duplicates from ...

    leetcode分类-leetcode-practice:LeetCode题解

    leetcode 分类 ...Palindrome II Easy 数据结构 二叉树 题目 难度 原题 解答 26. 树的子结构 中等 未分类 鸣谢 题目选择、分类参考了 关于 同步自我的博客:, 欢迎关注我的微信公众号「清风迅来」

    lrucacheleetcode-LeetCode-go:力密码

    LeetCode-go leetcode中文网站 目录 序号 名字 中文名字 备注 0 binarySearch 二分查找法 1 两数之和 2 两数相加 3 longestSubstr 无重复最长字串 4 findMedianSortedArrays 寻找两个有序数组的中位数 5 ...

    leetcode中国-leetcode:leetcode刷题

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

    leetcode卡-LeetCode:LeetCode题解

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

    LeetCode最全代码

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

    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浇花-LCSolutions:我的力扣解决方案

    leetcode 浇花力扣解决方案 简单的 #0001 - Two Sum #0007 - Reverse Integer #0009 - Palindrome Number #0035 - Search Insert Position #0058 - Length of Last Word #0066 - Plus One #0083 - Remove Duplicates...

    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...

    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-Algorithm-Exercise

    1_TwoSum 9_PalindromeNumber 13_RomanToInteger 14_LongestCommonPrefix 20_ValidParentheses 21_MergeTwoSortedLists 26_RemoveDuplicatesFromSortedArray 27_RemoveElement 28_ImplementStrStr() 35_Search...

    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_...

    leetcode双人赛-LeetCode:力扣笔记

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

    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_[removed]刷题

    Palindrome Number(回文数) 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 Longest Common Prefix(最长公共前缀) 编写一个函数来查找字符串数组中的最长公共前缀,...

    丢失的最小正整数leetcode-LeetCodePractice:我的LeetCode练习

    Palindrome Number:我的思路是直接利用取余法求得倒过来的数然后与原数据进行比较,直接但效率不高,从其他人那看到的思路,其实可以只求一半倒数然后与另一半作比较,既方便又快捷。 13. Roman to Integer:这道题...

    leetcode2-Algorithms-Practice:创建此repo是为了跟踪我在解决问题方面的进展

    LeetCode-练习 我的 Leetcode“解决方案”(在解决方案/文件夹中)来解决 leetcode 问题。 它用于练习和跟踪进度不是 100% 优化的。 我的账户链接 问题名称 运行时和内存使用 1. Two Sum 运行时间:4412 毫秒内存...

Global site tag (gtag.js) - Google Analytics