力扣刷题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--;
    }
   ···
   
   }
  ···

};
相关推荐
长河1 天前
Java开发者LLM实战——LangChain4j最新版教学知识库实战
java·开发语言
仙俊红1 天前
LeetCode每日一题,20250914
算法·leetcode·职场和发展
Cyan_RA91 天前
SpringMVC @RequestMapping的使用演示和细节 详解
java·开发语言·后端·spring·mvc·ssm·springmvc
喵手1 天前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
再见晴天*_*1 天前
SpringBoot 中单独一个类中运行main方法报错:找不到或无法加载主类
java·开发语言·intellij idea
人工智能训练师1 天前
Ubuntu22.04如何安装新版本的Node.js和npm
linux·运维·前端·人工智能·ubuntu·npm·node.js
Seveny071 天前
pnpm相对于npm,yarn的优势
前端·npm·node.js
yddddddy1 天前
css的基本知识
前端·css
昔人'1 天前
css `lh`单位
前端·css
hdsoft_huge1 天前
Java & Spring Boot常见异常全解析:原因、危害、处理与防范
java·开发语言·spring boot