力扣刷题Days31-第二题-125.验证回文串(js)

目录

1,题目

2,代码

2.1自己完成

2.2双指针


1,题目

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

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

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

2,代码

2.1自己完成

javascript 复制代码
/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    // 遍历过程情况
        // 大写字母 则转化为小写字母
        // 小写字母 数字 直接保留 
        // 非字母数字  丢掉

    // 先将不必要的内容进行去除
    let strInit = [];
    let index = 0;
    for(let i = 0;i < s.length ;i++){
        if(s[i]>='a' && s[i]<='z'){
            strInit[index++] = s[i];
        }else if(s[i]>='A' && s[i]<='Z'){
            strInit[index++] = s[i].toLowerCase();
        }else if(s[i]>='0' && s[i]<='9')
        {
            strInit[index++] = s[i];
        }
    }
    const oldString = strInit.join('');
    const reverseString = strInit.reverse().join('');

    return oldString === reverseString;

};

判断字符子否为数字,只需要判断其是否在0到9之间即可,并不存在多位数的数字情况;

数组的reverse()函数是在原函数上进行操作,所以要先保留原本的数组,这里将保留原数组和转化为字符串并为一步实现;(join()函数是不改变原来数组的)

2.2双指针

javascript 复制代码
/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
   //双指针
   let left = 0,right = s.length - 1;
   while(left < right){
   while (left < right && !/[a-zA-Z0-9]/.test(s.charAt(left))) {
            left++;
    }
    while(left < right && !/[a-zA-Z0-9]/.test(s.charAt(right))){
        right--;
    }

    if( s.charAt(left).toLowerCase() !=  s.charAt(right).toLowerCase()){
        return false;
    }else{
        right--;
        left++;
    }
   }
   return true;

};

利用正则表达式对大小字母和数字进行一个匹配筛选

javascript 复制代码
var isPalindrome = function(s) { 
   //双指针
   let left = 0,right = s.length - 1;
   while(left < right){
   ···
    while(left < right && !/[a-zA-Z0-9]/.test(s.charAt(right))){
        right--;
    }
   ···
   
   }
  ···

};
相关推荐
强哥聊算力2 小时前
《算力江湖·英伟达传奇》第七集:ChatGPT出现前夜,英伟达发生了什么?
服务器·人工智能·算法·ai·chatgpt·gpu算力
Jmyd01234 小时前
Web端3D营销展厅技术实现路径:从素材上云到线索回流的数据链路
前端·3d·性能优化·三维数字化
哦虎!4 小时前
【JavaEE】网络初识
java
半个落月4 小时前
LangChain Agent 中间件实战(上):生命周期、状态、短路与工具包
javascript·langchain
砚凝霜4 小时前
【软考信息安全】第二十二章 Web服务器安全分析与增强——Apache与IIS
服务器·前端·安全
for_ever_love__4 小时前
MySQL ORDER BY 排序优化:从 Using filesort 到索引有序扫描(含双路 / 单路排序原理)
java·mysql·优化·存储·by·order·filesort
半个落月4 小时前
LangChain Agent 中间件实战(下):DeepAgents文件权限、长期记忆与对话摘要
javascript·langchain
我是人✓5 小时前
Java文件上传三方式对比:从传统到SpringBoot
java·开发语言
欣栀♡5 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
Navigator_Z5 小时前
LeetCode //C - 1289. Minimum Falling Path Sum II
c语言·算法·leetcode