需求

如果传入的字符串是回文字符串,则返回 true。 否则返回 false

回文 palindrome,指在忽略标点符号、大小写和空格的前提下,正着读和反着读一模一样。

注意:检查回文时,你需要先去除所有非字母数字的字符(标点、空格和符号),并将所有字母都转换成大写或都转换成小写。

测试结果要求

palindrome("eye") 应返回一个布尔值。

palindrome("eye") 应返回 true。

palindrome("_eye") 应返回 true。

palindrome("race car") 应返回 true。

palindrome("not a palindrome") 应返回 false。

palindrome("A man, a plan, a canal. Panama") 应该返回 true。

palindrome("never odd or even") 应返回 true。

palindrome("nope") 应该返回 false。

palindrome("almostomla") 应返回 false。

palindrome("My age is 0, 0 si ega ym.") 应返回 true。

palindrome("1 eye for of 1 eye.") 应返回 false。

palindrome("0_0 (: /-\ :) 0-0") 应返回 true。

palindrome("five|\_/|four") 应返回 false。

已给框架

function palindrome(str) {
return true;
} palindrome("eye");

需求分析(解题思路)

首先判断字符串是否为回文(正着读反着读都一样)

var newStr = "";// 创建一个空的String型以存放倒过来的字符串

// 将字符(str) 倒着插入 新建的空的String型(newStr)
// 1、在for循环里var一个i变量,其初始值为 字符串长度-1(为了让i等于字符串的最后一个字符的索引值),让i不断减小,直至减小到0
// 2、将数组里的第i个字符依次添加到newStr里
for(var i = str.length - 1;i >= 0;i--) {
newStr += str[i];
} // 返回 判断两个字符串是否相等 的布尔值
return str == newStr;

接着,满足 删除原字符串里除了字母数字以外的东西 的需求

注意:这个需要写在 判断回文 前面

// 去除字母数字以外的字符
// 1、判断字符串中是否包含0-9,a-z,A-Z以外的符号
// 2、如果有,将它们删除(翻译:将它们改成“”)
if(str.match(/[^0-9a-zA-Z]/)) {
while (str.match(/[^0-9a-zA-Z]/)) {
str = str.replace(/[^0-9a-zA-Z]/,"");
}
}
// 把所有空格删除
// 思路和 去除字母数字以外的字符 一样
if(str.match(" ")) {
while (str.match(" ")) {
str = str.replace(" ","");
}
}

最后,满足 将所有字母都转换成大写或都转换成小写 的需求

注意:这个也需要写在 判断回文 前面

// 把所有字母转成小写
str = str.toLowerCase();

最终代码

function palindrome(str) {
// 去除字母数字以外的字符
if(str.match(/[^0-9a-zA-Z]/)) {
while (str.match(/[^0-9a-zA-Z]/)) {
str = str.replace(/[^0-9a-zA-Z]/,"");
}
} // 把所有字母转成小写
str = str.toLowerCase(); // 把所有空格删除
if(str.match(" ")) {
while (str.match(" ")) {
str = str.replace(" ","");
}
} // 回文检查
var newStr = "";
for(var i = str.length - 1;i >= 0;i--) {
newStr += str[i];
}
return str == newStr;
} palindrome("eye");

JS回文检查(FreeCodeCamp项目)的更多相关文章

  1. 7.Deque的应用案例-回文检查

    - 回文检测:设计程序,检测一个字符串是否为回文. - 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam. - 分析:该问题的解决方案将使用 deque 来存储字符串 ...

  2. js回文数的四种判断方法

    目录 1. 字符串的转换 1.1 简单点,使用高阶函数来完成 1.2 从后往前循环字符串数组 1.3 以中间数为节点,判断左右两边首尾是否相等 2. 数字转换 2.1 求模得尾数,除10得整数 判断一 ...

  3. 07 Deque的应用案例-回文检查

    - 回文检测:设计程序,检测一个字符串是否为回文. - 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam. - 分析:该问题的解决方案将使用 deque 来存储字符串 ...

  4. 七.Deque的应用案例-回文检查

    - 回文检测:设计程序,检测一个字符串是否为回文. - 回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam. - 分析:该问题的解决方案将使用 deque 来存储字符串 ...

  5. js 回文判断

    方法一: 1.toLowerCase()     //统一小写. 2.split(" ").reverse().join(" "); //字符串翻转. func ...

  6. python--使用双向队列结构检查回文

    这个简单,队列可两边进两边出. # coding = utf-8 # 双向进出队列 class Deque: def __init__(self): self.items = [] def is_em ...

  7. FCC JS基础算法题(2):Check for Palindromes(检查回文字符串)

    题目描述: 如果给定的字符串是回文,返回true,反之,返回false.如果一个字符串忽略标点符号.大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文).注意你需要去掉 ...

  8. 用JS实现回文数的精准辨别!!!

    笔者最近在一边看<JS高级程序设计3>一边在FCC上找题目练习啊.那叫一个爽.这不,刚刚用生命在课堂,寝室,实验室,图书馆等各种场所将第五章"引用类型"搞定,FCC便知 ...

  9. shell脚本,检查给出的字符串是否为回文

    [root@localhost wyb]# .sh #!/bin/bash #检查给出的字符串是否为回文 read -p "Please input a String:" numb ...

  10. js判断一个字符串是否是回文字符串

    回文字符串:即字符串从前往后读和从后往前读字符顺序是一致的. 如:字符串abccba,从前往后读是a-b-c-c-b-a:从后往前读也是a-b-c-c-b-a 方法一 function palindR ...

随机推荐

  1. LeetCode-1765 地图中的最高点

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/map-of-highest-peak 题目描述 给你一个大小为 m x n 的整数矩阵 isWa ...

  2. Linux操作命令(四) 1.which命令 2.whereis命令 3.locate命令

    1.which命令 which 命令的作用是,在 PATH 变量指定的路径中搜索可执行文件的所在位置.它一般用来确认系统中是否安装了指定的软件 确认是否安装了 gcc:which gcc 查看 cd ...

  3. 简述traceroute命令的原理

    原理 traceroute命令是一种用于显示数据包从源主机到目的主机经过的路由器和网络设备的路径的工具.traceroute命令的原理是利用IP数据报的生存时间(TTL)字段和因特网控制报文协议(IC ...

  4. bash 和 zsh 中while循环的方式

    bash: while true; do ./a.out; done zsh: while true; do ./a.out;

  5. 关于fetch请求中非表单模式(form)转化为form格式请求成功问题

    首先证实一下接口请求可以成功,postman掉通 2.证实接口可以掉通之后,来发现问题 发现根本不是form表单格式3.去操作实现form表单格式 发现form格式貌似已经转换,但是请求还是不对 最后 ...

  6. Word17 学生儿童医保扣款方式更新的通知

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  7. git手记

    参照的是http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000这里的,git教程确实写得不 ...

  8. vue+elementUI表格实现自定义右键菜单

    组件代码: <template> <div id="contextmenu" class="contextmenu open"> < ...

  9. 在docker中导入python的包时ImportError: libgthread-2.0.so.0: cannot open shared object file: No such file or directory

    问题: ImportError: libGL.so.1: cannot open shared object file: No such file or directory ImportError: ...

  10. 20200420关于mysql突然停止服务的记录

    期待评论ing... 前天开发商城项目的时候,没注意d盘满了,后来5.5的mysql就突然无法启动,而且提示2003错误,在cmd中启动也是没有任何报错信息. 然后就找5.5原因,在windows的, ...