首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。