前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端算法专栏-数组-125. 验证回文串

前端算法专栏-数组-125. 验证回文串

原创
作者头像
程序员库里
发布2023-12-14 10:09:58
1490
发布2023-12-14 10:09:58
举报
文章被收录于专栏:全栈学习全栈学习

Hi 大家好。我是程序员库里,今天新开一个前端算法专栏。

接下来会分类给大家分享常考算法题目。

很多朋友也是看着这套系列算法拿到很多offer!所以也是想分享给更多朋友,帮助到有需要的朋友。

分类

数组-对撞指针

题目

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。

示例 1:

输入: s = "A man, a plan, a canal: Panama"

输出:true

解释:"amanaplanacanalpanama" 是回文串。

示例 2:

输入:s = "race a car"

输出:false

解释:"raceacar" 不是回文串。

示例 3:

输入:s = " "

输出:true

解释:在移除非字母数字字符之后,s 是一个空字符串 "" 。

由于空字符串正着反着读都一样,所以是回文串。

解释

  1. 采用指针对撞的原理
  2. 首先将字符串中的符号去除,然后将字母转换为小写
  3. 定义左指针left,初始值是0
  4. 定义右指针,初始值是字符串长度最后一位
  5. 开始遍历循环,条件是left 小于 right
  6. 当left指向的元素等于right指向的元素时,说明目前位置左右两边时相同的元素。left继续向右移动一位,right继续向左移动一位。
  7. 如果两个不相等,表示不是回文字符串,返回false
  8. 遍历完后,如果都相等,则是回文字符串,返回true

代码

代码语言:javascript
复制
/**
 * @param {string} s
 * @return {boolean}
 */
   var isPalindrome = function(s) {
      const arr = s.replace(/[^a-z0-9A-Z]/ig,'').toLowerCase()
      console.log(arr)
      let left = 0 , right = arr.length-1;
      while(left < right){
          if(arr[left] === arr[right]){
              left++
              right--
          }else{
              return false
          }
      }
      return true
    };

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分类
  • 题目
  • 解释
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档