前端算法(74)

简介: 前端算法(74)

题目

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

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

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

输入: s = " "
输出: true
解释: 在移除非字母数字字符之后,s 是一个空字符串 "" 。
由于空字符串正着反着读都一样,所以是回文串。

题目解析

思路一

我们先用正则表达式匹配出所有不是数字和字母的字符并将他们替换为空串,在用while循环将头和尾同时遍历判断是否字符正确,由于我们不区分大小写字母、但是其大小写Ascii码值相差32,所以可以用来作判断,由于0PAscii码值刚好相差32并且不为回文串,所以可以放在函数首行判断返回false。

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
  if(s == "0P"){
    return false;
  }
  const reg = /[^A-Za-z0-9]+/g;
  s = s.replace(reg,"");
  let num1=0,num2=s.length-1;
  while(num2>=0){
    let Ascii1 = s.charCodeAt(num1++);
    let Ascii2 = s.charCodeAt(num2--);
    if(Ascii1 != Ascii2 && Math.abs(Ascii1-Ascii2)!=32){
      return false;
    }
  }
  return true;
};

思路二

var isNumberOrStr = (str)=>{
        //判断这个字符是否是数字
        let isNum =  /[0-9]/.test(Number(str));
        //判断这个字符是否是字母
        let isStr = /[a-zA-Z]/.test(String(str));
        if(isNum || isStr){
            return true;
        }
        return false;
    }
var isPalindrome = function(s) {
        //新建一个空字符串名为sb
        var sb = "";
        for(let i=0;i<s.length;i++){
            //取得每一个字符
            let char = s.charAt(i);
            //判断当前字符是数字或者是字母
            if(isNumberOrStr(char)){
                 //去掉空格,空格不能有的
                char = char.replace(/\s+/g,'');
                 //将满足条件的字符,再转为小写字母,添加到sb里
                sb += String.prototype.toLowerCase.call(char);
            }
        }
        //新建一个字符串sb2为字符串sb的拷贝
        var sb2 = sb.concat();
        //反转sb2,先split再reverse最后join连接
        sb2 = sb2.split("").reverse().join("");
        return sb === sb2;
};


相关文章
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
538 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
10月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
674 5
|
前端开发 算法
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
sass 公用10个mixins代码块,算法太TM重要了,前端开发要求
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
874 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
12月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
271 0
|
JavaScript 算法 前端开发
"揭秘Vue.js的高效渲染秘诀:深度解析Diff算法如何让前端开发快人一步"
【8月更文挑战第20天】Vue.js是一款备受欢迎的前端框架,以其声明式的响应式数据绑定和组件化开发著称。在Vue中,Diff算法是核心之一,它高效计算虚拟DOM更新时所需的最小实际DOM变更,确保界面快速准确更新。算法通过比较新旧虚拟DOM树的同层级节点,递归检查子节点,并利用`key`属性优化列表更新。虽然存在局限性,如难以处理跨层级节点移动,但Diff算法仍是Vue高效更新机制的关键,帮助开发者构建高性能Web应用。
247 1
|
数据采集 前端开发 算法
基于朴素贝叶斯算法的新闻类型预测,django框架开发,前端bootstrap,有爬虫有数据库
本文介绍了一个基于Django框架和朴素贝叶斯算法开发的新闻类型预测系统,该系统具备用户登录注册、后台管理、数据展示、新闻分类分布分析、新闻数量排名和新闻标题预测等功能,旨在提高新闻处理效率和个性化推荐服务。
150 4
|
前端开发 算法 JavaScript
优化算法在前端性能提升中的应用
随着互联网应用的日益复杂,前端性能优化成为开发者关注的焦点。本文探讨了优化算法在前端性能提升中的重要作用,包括对JavaScript代码的优化、资源加载的算法选择以及页面渲染的优化策略。通过合理应用优化算法,可以有效提升前端应用的性能和用户体验。

热门文章

最新文章