首页 > 其他分享 >js 有效的回文

js 有效的回文

时间:2023-02-11 23:24:19浏览次数:42  
标签:arr false js 有效 flag 数组 字符串 回文

  需求:求出是否是「回文字符串」(正确的回文:abba、abcba),是返回true,否返回false,字符不能包含除汉字与字母之外的字符串。   思路:   step1: 处理边界问题,先对字符进行正则处理,把除汉字与字母之外的字符串剔除并转成小写,形成紧密相连的字符串。     step2: 把字符串切割成数组,然后立个布尔型flag变量来做返回值。   step3: 利用 shift(数组第一位)和 pop(数组最后一位)匹对是否相等,遇到不相等则返回false。   step4: 终止条件为数组长度 <= 1则不再进行判断,因为最后剩下的字符串长度有可能是奇数1或者是偶数0。   实现:

const isPalindrome = function (s) {
    // 边界处理去除除汉字与字母之外的字符串并转成数组
    const arr = s
        .replace(/[^\u4e00-\u9fa5a-zA-Z\d]/g, '')
        .toLowerCase()
        .split('');
    // 立个flag,是正确回文是true,否则是false
    let flag = true;
    // 判断数组大于1,则需要对头尾弹出的字符进行判断
    while (arr.length > 1) {
        // 判断数组头尾的字符是否相等,不相等则不是正确的回文
        if (arr.shift() !== arr.pop()) {
            return false;
        }
    }
    return flag;
};

console.log(isPalindrome('aabaa'));

 

标签:arr,false,js,有效,flag,数组,字符串,回文
From: https://www.cnblogs.com/zion0707/p/17112784.html

相关文章

  • 使用JS的DOM(文档对象模型)获取前端循环的参数
    使用JS的DOM(文档对象模型)获取前端循环的参数使用Go语言渲染html,但是想让网页动起来,显示一些弹窗还是比较麻烦的,于是乎,想到使用js获取页面的数据进行显示,但是js无法加载go......
  • 768~769 MVC_jsp演变历史,MVC详解
    MVC:开发模式jsp演变历史1.早期只有servlet,只能使用response输出标签数据,非常麻烦2.后来又jsp,简化了Servlet的开发,如果过度使用jsp,在jsp中即写大......
  • 还在用 JS 做节流吗?CSS 也可以防止按钮重复点击
    本文正在参加「金石计划.瓜分6万现金大奖」。欢迎关注我的公众号:前端侦探众所周知,函数节流(throttle)是JS中一个非常常见的优化手段,可以有效的避免函数过于频繁的执......
  • 766~767 JSP注解,内置对象
    注释:1.html注释:<!---->:只能注释html代码片段2.jsp注释:推荐使用<%----%>:可以注释所有<!--<h1>hello</h1>--><%--<%......
  • @JsonFormat和@DateTimeFormat
    JsonFormat和DateTimeFormat是两个不同的注解,它们用于不同的场景。JsonFormat是Jackson库中的注解,它用于指定Java对象在序列化或反序列化为/从JSON时的格式。D......
  • js-防抖(简易版)
    /** *节流函数 */varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  //c......
  • js 防抖
    //防抖作用:防止重复触发事件varcount=1;varcontainer=document.getElementById('container');functiongetUserAction(e){  //console.log(this)  ......
  • JS改变input元素的value之后如何使v-model双向绑定的值也同步改变
    使用dispatchEvent:letel=document.querySelector('#input')el.value='newvalue'el.dispatchEvent(newEvent('input'))有的元素可能需要使用change事件:el.d......
  • 关于js类的继承
    原型链继承特点:基于原型链,既是父类的实例,也是子类的实例。缺点:无法实现多继承。构造继承特点:可以实现多继承。缺点:之能继承父类实例的属性和方法,不能继承原型上......
  • 代码随想录算法训练营第十一天【栈与队列】20.有效的括号、1047.删除字符串中的所有相
    20.有效的括号力扣题目链接心得:栈的经典题目,先进后出,有三种return false的情况。1)遍历字符串完成,但是栈不为空。说明左括号比右括号多,导致栈中多存了数据2)遍......