Lintcode415-Valid Palindrome-Medium

Given a string, determine if it is a palindrome, considering only alphanumeric(字母和数字) characters and ignoring cases.

Example

Example 1:

Input: "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama"

Example 2:

Input: "race a car"
Output: false
Explanation: "raceacar"

Challenge

O(n) time without extra memory.

Notice

Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

 

思路:

字符串中只考虑字母和数字是否构成一个回文串,no extra space可以定义两个指针。

 

注意:

  1. 两个指针命名,front 和 end,不要用i, j
  2. 同类中:方法与方法之间直接用方法名来互相调用。Java方法的调用。
  3. 多个if并列 和 else if 区别:If you have used multiple if statements then if the condition is true all will be executed. If you have used if and else if combination only one will be executed where first comes the true value 
    所以,如果把line 10 12 14 变成并列if,output会出错。因为如果连续出现两个或以上的非字母数字字符的话,就会输出false。比如 String s = a'+ba; 
  4. boolean方法命名以is开头。
  5. line 9, 不能写成 while (front != end) , 举例 s = "aa", 指针front, end 交叉后会outOfIndexException.

 

 

代码:

 1 public class Solution {
 2     
 3     public boolean isPalindrome(String s) {
 4         if (s == null || s.length() == 0)
 5             return true;
 6             
 7         int front = 0;
 8         int end = s.length() - 1;
 9         while (front < end) {
10             if (!isValid(s.charAt(front)))
11                 front++;
12             else if (!isValid(s.charAt(end)))
13                 end--;
14             else {
15                 if (isValidCase(s.charAt(front), s.charAt(end))){
16                     front++;
17                     end--;
18                 } else {
19                     return false;
20                 }
21             }
22             
23         }
24         return true;
25     }
26     
27     public boolean isValid(char c) {
28         return Character.isLetter(c) || Character.isDigit(c);
29     }
30     public boolean isValidCase(char a, char b) {
31         if (a == b)
32             return true;
33         else if (Character.toUpperCase(a) == Character.toUpperCase(b))
34             return true;
35         else
36         return false;
37     }
38 }

 

代码优化:

public class Solution {public boolean isPalindrome(String s) {if (s == null || s.length() == 0) {return true;}int front = 0;int end = s.length() - 1;while (front < end) {while (front < s.length() && !isvalid(s.charAt(front))) { // nead to check range of a/bfront++;}if (front == s.length()) { // for empty string “.,,,”     return true; }           while (end >= 0 && ! isvalid(s.charAt(end))) { // same here, need to check border of a,bend--;}if (Character.toLowerCase(s.charAt(front)) != Character.toLowerCase(s.charAt(end))) {return false;} else {front++;end--;}}return true; }private boolean isvalid (char c) {return Character.isLetter(c) || Character.isDigit(c);}
}

 

转载于:https://www.cnblogs.com/Jessiezyr/p/10643865.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

牛客16502 螺旋矩阵

链接&#xff1a;https://ac.nowcoder.com/acm/problem/16502 来源&#xff1a;牛客网 题目描述 一个 n 行 n 列的螺旋矩阵可由如下方法生成&#xff1a; 从矩阵的左上角&#xff08;第 1 行第 1 列&#xff09;出发&#xff0c;初始时向右移动&#xff1b;如果前方是未曾经…

java 接口

转载于:https://www.cnblogs.com/javawen/p/10650269.html

四位专家谈:数字医学中的因果关系

来源&#xff1a;ScienceAI编译&#xff1a;凯霞Ben Glocker&#xff08;伦敦帝国理工学院医学成像机器学习专家&#xff09;、Mirco Musolesi&#xff08;伦敦大学学院数据科学和数字健康专家&#xff09;、Jonathan Richens&#xff08;诊断机器学习模型专家&#xff0c;Baby…

牛客21781 牛兄牛弟

链接&#xff1a;https://ac.nowcoder.com/acm/problem/21781 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 一群牛兄牛弟准备去一家餐厅吃饭&am…

中国算力发展指数白皮书(2021)

来源&#xff1a;中国信息通信研究院编辑&#xff1a;蒲蒲当前&#xff0c;新一轮科技革命和产业变革正在重塑全球经济结构&#xff0c;算力作为数字经济时代新的生产力&#xff0c;是支撑数字经济发展的坚实基础&#xff0c;对推动科技进步、促进行业数字化以及支撑经济社会发…

java和python对比----1:

对计算来说&#xff1a; java 除法: 3/4 0;pyhton 除法: 3/4 0 3//40.75转载于:https://www.cnblogs.com/yanxiaoge/p/10650984.html

牛客14605 画三角

链接&#xff1a;https://ac.nowcoder.com/acm/problem/14605 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 小学时&#xff0c;JYM和XJ刚刚学…

高金吉院士:让机器“自愈化”引领新科技变革

来源&#xff1a;《 人民日报海外版 》&#xff08; 2021年09月20日 第 09 版&#xff09;作者&#xff1a;高金吉&#xff0c;中国工程院院士、北京化工大学教授、兼任中国工业互联网研究院技术委员会主任18世纪60年代&#xff0c;发端于英国的第一次工业革命开创了以机器代…

Kaggle初学者五步入门指南,七大诀窍助你享受竞赛

Kaggle 是一个流行的数据科学竞赛平台&#xff0c;已被谷歌收购&#xff0c;参阅《业界 | 谷歌云官方正式宣布收购数据科学社区 Kaggle》。作为一个竞赛平台&#xff0c;Kaggle 对于初学者来说可能有些难度。毕竟其中的一些竞赛有高达 100 万美元的奖金池和数百位参赛者。顶级的…

牛客14350 苦逼的单身狗

链接&#xff1a;https://ac.nowcoder.com/acm/problem/14350 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 双11又到了&#xff0c;小Z依然只是…

让机器“自愈化”引领新科技变革

来源&#xff1a;金台资讯18世纪60年代&#xff0c;发端于英国的第一次工业革命开创了以机器代替手工劳动的时代。然而&#xff0c;机器是把“双刃剑”&#xff0c;可以为人类带来福祉&#xff0c;也可能造成灾害。随着高危流程工业装备和空天飞行器的发展&#xff0c;故障导致…

牛客14338 分苹果

链接&#xff1a;https://ac.nowcoder.com/acm/problem/14338 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 今天是Tabris和mengxiang000来到幼儿…

揭秘特斯拉自动驾驶雄心:最大优势非算法或技术而是海量数据

来源&#xff1a;腾讯科技 审校&#xff1a;金鹿腾讯科技讯 9月20日消息&#xff0c;对于电动汽车制造商特斯拉来说&#xff0c;实现全自动驾驶始终是其优先议程之一。与其他竞争对手相比&#xff0c;该公司的最大优势并非技术或算法&#xff0c;而是目前上路的40多万辆汽车提供…

牛客14342 神奇的数字

链接&#xff1a;https://ac.nowcoder.com/acm/problem/14342 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 32768K&#xff0c;其他语言65536K 64bit IO Format: %lld 题目描述 今天是Tabris和mengxiang000来到幼儿…

JavaScript 转载

JavaScript概述 ECMAScript和JavaScript的关系 1996年11月&#xff0c;JavaScript的创造者--Netscape公司&#xff0c;决定将JavaScript提交给国际标准化组织ECMA&#xff0c;希望这门语言能够成为国际标准。次年&#xff0c;ECMA发布262号标准文件&#xff08;ECMA-262&#x…

《2021年全球创新指数报告》发布!

来源&#xff1a;科技日报作者&#xff1a;操秀英世界知识产权组织&#xff08;WIPO&#xff09;9月20日在日内瓦发布的《2021年全球创新指数报告》显示&#xff0c;中国排名第12位&#xff0c;较2020年上升2位。《报告》高度评价中国在创新方面取得的进步&#xff0c;并强调了…

牛客16464 神奇的幻方

链接&#xff1a;https://ac.nowcoder.com/acm/problem/16464 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 幻方是一种很神奇的 N*N 矩阵&…

共享锁和排他锁

Mysql默认事务隔离是可重复读&#xff0c;即在一个事务中读取到的数据是一致的&#xff0c;不会被其他操作污染。 select 不会受影响&#xff0c;在事务中或者普通执行都可以。mysql会为update, insert, delete自动加上排他锁。事务A共享锁&#xff0c;A可以做增删改查&#xf…

《汽车驾驶自动化分级》国家标准发布

来源&#xff1a;国家市场监管总局编辑&#xff1a;蒲蒲据市场监管总局官网&#xff0c;近日&#xff0c;市场监管总局&#xff08;标准委&#xff09;集中发布了一批重要国家标准。其中&#xff0c;就有针对自动驾驶功能的《汽车驾驶自动化分级》国家推荐标准&#xff08;GB/T…

牛客13592 武藏牌牛奶促销

链接&#xff1a;https://ac.nowcoder.com/acm/problem/13592 来源&#xff1a;牛客网 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 131072K&#xff0c;其他语言262144K 64bit IO Format: %lld 题目描述 武藏牌牛奶为了吸引顾客&#xff…