首页 > 代码库 > Valid Palindrome

Valid Palindrome

一开始非常天真的利用2次for循环,依次剔除其中的非英文字符,一次用来比较,但是后来显示超时,没办法,只能把两次合并为一次。qishifdsfd

。其实我是最厌恶这种题目的,要求不清,你以为有效字符只是英文字母,结果运行一遍才发现竟然还有数字,只能接着改。

 

ac的代码:

public class Solution {    boolean isalpha(char ch) {        if (((int) ch >= 97 && (int) ch <= 122)) {            return true;        } else {            return false;        }    }    boolean isdigit(char ch) {        if (((int) ch >= 48 && (int) ch <= 57)) {            return true;        } else {            return false;        }    }        public boolean isPalindrome(String s) {                s=s.trim();        if(s.length()==0){            return true;        }                        s = s.toLowerCase();        int qian = 0;        int hou = s.length() - 1;        while (qian < hou) {            if ( (isalpha(s.charAt(qian))||isdigit(s.charAt(qian)))&&(isalpha(s.charAt(hou))||isdigit(s.charAt(hou))) ) {                // 如果两个都是英文字符或数字才能进行比较                if (s.charAt(qian) != s.charAt(hou)) {                    return false;                }                qian = qian + 1;                hou = hou - 1;            } else if ( !isalpha(s.charAt(qian))&&(!isdigit(s.charAt(qian))) ) {                // 如果前面的不是英文字符,则略过                qian = qian + 1;            } else if ( !isalpha(s.charAt(hou))&&(!isdigit(s.charAt(hou))) ) {                // 如果前面的不是英文字符,则略过                hou = hou - 1;            }        }        return true;                      }}

 

Valid Palindrome