码迷,mamicode.com
首页 > 其他好文 > 详细

125. Valid Palindrome

时间:2017-09-27 00:45:50      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:技术分享   end   时间   跳过   ascii码   ==   .com   com   val   

思路:

首尾指针一起走,如果遇到非0-9,a-z,A-Z直接跳过去

判定是否相等,直接减去65,也就是ascii码A对应的那个值,如果是非负数则判定为是字母,进行字母的处理,如果是负数,不进行处理,这个时候已经将其判定为是数字,以上操作将65作为坐标原点将数字(左边)和字母(右边)进行了切分。

本来想着这么笨的方法应该时间会比较久吧,运行时间出来之后有点惊讶。

class Solution {
    public boolean isPalindrome(String s) {
        
        char[] chars = s.toCharArray();
        int start = 0,end = s.length() - 1;
        while(start < end)
        {   
            while(!isAlpha(chars[start]) && start + 1 < s.length())    start++;
            while(!isAlpha(chars[end]) && end - 1 > -1)        end--;
            if(start > end)
                return true;
            int startc = chars[start] - 65 >= 0 ? (chars[start] - 65) % 32 : chars[start] - 65;
            int endc =   chars[end] - 65 >= 0 ? (chars[end] - 65) % 32 : chars[end] - 65;
            if(startc == endc) 
            {
                start++;
                end--;   
            }
            else    return false;
        }
        return true;
    }
    public boolean isAlpha(char c)
    {
        return (c >= ‘A‘ && c <= ‘Z‘) || (c >= ‘a‘ && c <= ‘z‘) || (c >= ‘0‘ && c <= ‘9‘);
    }
}

技术分享

125. Valid Palindrome

标签:技术分享   end   时间   跳过   ascii码   ==   .com   com   val   

原文地址:http://www.cnblogs.com/xeal/p/7599556.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!