问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用Javascript实现回文

发布网友 发布时间:2022-04-24 03:35

我来回答

3个回答

懂视网 时间:2022-04-24 07:56

最近在学习的时候到了基础算法这一章节,让我对js内置对象方法的掌握还有思维逻辑都得到了提升,所借此机会来写一写学习心得和总结。下面这篇文章主要介绍了利用javascript实现翻转字符串与回文的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

翻转字符串

翻转字符串(Reverse a String),就是把字符串倒序处理的意思,比如给定一个字符串”hello”,翻转后应该返回”olleh”。

测试用例

  1. reverseString("hello") 应该返回 “olleh”

  2. reverseString("Greetings from Earth") 应该返回 “htraE morf sgniteerG”

实现思路

这里说最方便的方法就是将字符串转成数组,再颠倒数组并转成字符串返回。需要用到字符串对象和数组对象的内置方法:

  1. String.split()

  2. Array.reverse()

  3. Array.join()

具体可以去看JavaScript参考手册

一句return搞定,很简单有木有?!

在此基础上来看看回文是怎么玩的??

回文

“Madam,I'mAdam.” 这是亚当在伊甸园里碰上夏娃说的第一句话,这句话正着读和反着读一模一样,这样的句子就是回文,英文里叫Palindrome。

举个栗子——“上海自来水来自海上”,这句话顺着读和反着读都是相同的,还有很多英语单词也是:Level、Madam、Radar、LOL(哈哈哈)…

测试用例

  1. palindrome("Race Car") 应该返回 true

  2. palindrome("not a palindrome") 应该返回 false

  3. palindrome("0_0 (: /- :) 0-0") 应该返回 true

实现思路

我们需要写一个叫palindrome()的方法,传入一个叫str的参数,如果str是一个Palindromes将返回true,反之为false。

需要注意将标点符号和空格去掉并toUpperCase or toLowerCase后再进行判断。

需要用到以下知识点:

  • 正则表达式 (regular expression) ,用来过滤符号和空格

  • String.replace() 替换与正则表达式匹配的子串

  • String.toLowerCase() 把字符串转换为小写

  • 关于正则表达式

    这里要求匹配大小写英文字母和整数,任何标点符合和空格将被过滤掉。所以可以使用 /[^A-Za-z0–9]/g 或者 /[W_]/g

  • [^A-Z] 匹配非26个大写字母中的任意一个

  • [^a-z] 匹配非26个小写字母中的任意一个

  • [^0-9] 匹配非0到9中的任意一个数字

  • [^_] 匹配非下划线

  • ^ 匹配字符串的开始

  • w 注意是小写,匹配字母或数字或下划线或汉字

  • W 注意是大写,匹配任意不是字母、数字、下划线、汉字的字符,等价于[^A-Za-z0-9_]

  • g 表示全局搜索

  • 这是我的方法:

    我在网上看到还可以用For循环来实现:

    这个思路很巧妙的运用了回文的特点,把整个字符串切成一半,循环遍历并依次判断首尾字符是否相等。

    还有个运用了递归的实现:

    感觉另外两个实现思路比我屌多了,自己在编程的路上才走没多远,一步一步来吧。

    对了,别纠结翻转字符串和回文的区别了!翻转字符串仅仅是将倒序后的字符串返回;而回文面对的则是更长更复杂的句子,需要将过滤掉空格和标点符号的句子和倒序后的句子比较是否相等。

    更多javascript基础练习之翻转字符串与回文相关文章请关注PHP中文网!

    热心网友 时间:2022-04-24 05:04

    String.prototype.reverse=function(){

        var arr=[];
        for(var i=0;i<this.length;i++){
            arr.push(this[i]);
        }
        
        return arr.reverse().join('');
        
    }


    然后就可以

    "1234234".reverse();

     

    判断是否是回文?这样“12321”,“123321”?

    String.prototype.isReverse=function(){

        if(!this||this.length==0) return false;

        for(var i=0;i<this.length/2;i++){
            
            if(this[i]!=this[this.length-i-1]){
                return false;
            }
        }
        return true;

    }

    热心网友 时间:2022-04-24 06:22

    这是逆序吧,不是回文吧?!!我印象中的回文是abcdcba这样形式的。
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    ...二极管 电动车的电瓶因为出于成本考虑,将新旧电瓶混用,因为旧电池内 ... 两个不同容量的蓄电池并联后怎么防止大容量电池向小容量电池放电 工伤后小孩有抚养费吗,会给多少钱 南京工伤死亡子女抚养费标准 邵阳车管所疫情上班吗 2023年验车推迟吗,2023年检车线什么时候上班 全面复工包括黔江车管所不 江宁车管所什么时候复工 疫情期间交警几点下班? 3d和值多少算中奖? 咽拭子五个人的样本放在一个试管里怎么检测 空气等离子切割机的结构特点 皇上,你可曾记得大明湖畔的夏雨荷! 原来的同学不记得你是谁了是不是我该把他们q删掉呢? 如果一个女孩对一个男孩说我好像不记得你是谁了怎么办男孩说那好办啊,不乐意交往了你就这么说是什么含义 如果你认识的人加了你的微信,而他可能记得你你却又装作不认识你,问你是谁该怎么回答他? 如果一个女孩对男朋说我好像不记得你是谁了怎么办?男朋友说那好办啊,不乐意交往了你就这么是什么含意 如果下辈子我还记得你是谁的歌? 微信加她,我是XXX,你还记得我吗?她回不记得,你是谁?是不是没戏了? 求《记住你是谁》txt下载 《暮光之城》为什么卡伦对爱德华说 记住你是谁 美国动画版《狮子王》里有句经典台词:记住你是谁。用的是什么心理学? 如果一个男人喝酒后说我喜欢你 , 想要你,还记得你是谁。酒醒了就说我什么都不记得了? 那首歌的歌词是“天灰灰你的美,让我记得你是谁” 天天象棋新版98在求解? 拳皇97和98在游戏厅里哪个被别人玩的多? 98年在大学里很迷茫 98在c语言中用c%形式输出是多少 请问kof98怎么在空中防御? 谁能告诉我98在DOS下怎么装 是燕京理工的商务英语好还是河北外国语学院的商务英语好? 请问商务英语专业好的大学有哪些 商务英语哪个大学好一点 火狐浏览器打开新标签页显示由于内容安全策略而被阻止 哪些二本大学的商务英语专业最好 那个好大学的商务英语专业比较好? 天津或河北范围内商务英语专业比较好的二本大学? 最好学校环境也好 国际航班的飞机上能用充电宝吗 一旅客使用携带的充电宝在飞机上为手机充电,作为乘务人员你会怎么做? 一旅客携带充电宝在飞机上给手机充电,作为乘务员,你会怎么做 网上怎么办理中国银行短信通知 珠宝设计师每天的主要工作,究竟是什么呢? 华为手机在国内营销,真的是打爱国牌么? 刚刚怀孕4周了,应该注意些什么,吃什么食物好 怀孕4周就有孕吐反应正常吗?饮食方面要注意什么吗? 如何微信通知同学参加老师寿宴? 老婆怀孕4周,自然流产了,该怎么调养,注意什么 请编写一个程序,从键盘输入一个字符串,判断这个字符串是否是回文:如果是,打印YES;如果不是,打印NO 关于在word中插入页码的问题。 辣条能和手抓饼一起吃吗?