标签:技术分享 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‘); } }
标签:技术分享 end 时间 跳过 ascii码 == .com com val
原文地址:http://www.cnblogs.com/xeal/p/7599556.html