LintCode - 有效回文串(普通)

版权声明:本文为博主原创文章,未经博主允许不得转载。

难度:容易
要求:

给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。

注意事项
你是否考虑过,字符串有可能是空字符串?这是面试过程中,面试官常常会问的问题。
在这个题目中,我们将空字符串判定为有效回文。

样例

"A man, a plan, a canal: Panama" 是一个回文。"race a car" 不是一个回文。

思路

    /**
     * @param s A string
     * @return Whether the string is a valid palindrome
     */
    public boolean isPalindrome(String s) {
        if (s == null || s.length() == 0) {
            return true;
        }
        s = s.toLowerCase();
        int left = 0;
        int right = s.length() - 1;
        while(left < right){
            while(left < s.length() && !isValid(s.charAt(left))){// nead to check range of a/b
                left++;
            }
            if(left == s.length()){// for emtpy string “.,,,”
                return true;
            }
            while(right >= 0 && !isValid(s.charAt(right))){
                right--;
            }
            if(Character.toLowerCase(s.charAt(left)) == Character.toLowerCase(s.charAt(right))){
                right--;
                left++;
            }else{
                break;
            }
        }
        return right <= left;
    }
    
    /**
     * 是否为有效
     */
    private boolean isValid(char c){
        return Character.isLetter(c) || Character.isDigit(c);
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。注意事项你是否考虑过,字符串有可能是空字符串...
    DayDayUpppppp阅读 347评论 0 1
  • 题目 给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。** 注意事项**你是否考虑过,字符串...
    六尺帐篷阅读 571评论 0 1
  • 描述 给定一个字符串,判断其是否为一个回文串。只包含字母和数字,忽略大小写。 注意事项 你是否考虑过,字符串有可能...
    6默默Welsh阅读 278评论 0 0
  • 春天的麦地很是养眼。王小军四仰八叉地躺在麦地里看着天空。天很蓝,阳光暖融融的,有几朵白云。春天来了,王小军想着,顺...
    原来你也在济南阅读 1,102评论 0 2
  • 深圳,阴天。今天发生了很多事情,比如犯糊涂的事情就做了两件。一个是上午买汤圆饺子,量买少了,接着晚上又出去买了一趟...
    Echo可可阅读 296评论 0 0

友情链接更多精彩内容