博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode125. Valid Palindrome
阅读量:5958 次
发布时间:2019-06-19

本文共 1426 字,大约阅读时间需要 4 分钟。

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,

"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:

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.

验证回文字符串是比较常见的问题,所谓回文,就是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。但是这里,加入了空格和非字母数字的字符,增加了些难度,但其实原理还是很简单:只需要建立两个指针,left和right, 分别从字符的开头和结尾处开始遍历整个字符串,如果遇到非字母数字的字符就跳过,继续往下找,直到找到下一个字母数字或者结束遍历,如果遇到大写字母,就将其转为小写。等左右指针都找到字母数字时,比较这两个字符,若相等,则继续比较下面两个分别找到的字母数字,若不相等,直接返回false.

时间复杂度为O(n), 代码如下:

var isPalindrome = function(s) {       var n = s.length;       if( n <= 1){           return true       }       var left = 0;       var right = n -1;       while(left < right){           if(!isAlphanumeric(s[left])){               left++           }else if(!isAlphanumeric(s[right])){               right--           }else if(s[left].toLowerCase() !== s[right].toLowerCase()){               return false           }else{               left++               right--           }                      }       return true    };function isAlphanumeric(a){   var c = a.charCodeAt(0)   if( c >= 48 &&  c<=57){//0-9       return true   }   if( c >= 65 &&  c<= 90){//A-Z       return true   }   if( c >= 97 &&  c<= 122){//a-z       return true   }   return false}

转载地址:http://dnuax.baihongyu.com/

你可能感兴趣的文章
GitLab 安装笔记
查看>>
JavaScript 异步队列及Co实现
查看>>
原生javascript实现无缝滚动
查看>>
EventBus使用方法详解
查看>>
使用 Phoenix-4.11.0连接 Hbase 集群 ,并使用 JDBC 查询测试
查看>>
判断字符串是否含有中英文和数字
查看>>
javascript模拟原生Promise语法
查看>>
Linux机器相互登录
查看>>
GitChat · 人工智能 | 用语音和自然语言控制智能家居——实例分享
查看>>
使用certbot为你的网站免费上https
查看>>
toString与toLocaleString在不同数据类型下输出的差异
查看>>
es6学习笔记-Symbol_v1.0_byKL
查看>>
ES6简单了解
查看>>
vue源码学习之简单的数据监听
查看>>
koa中间件机制详解
查看>>
Python-Decorator
查看>>
理解BERT Transformer:Attention is not all you need!
查看>>
Linus发布Linux 5.0 rc1版本,为原来4.21版本
查看>>
AT&T签署8位数合同,设备商恐无法从5G获利
查看>>
精益项目管理的可行性分析
查看>>