如何实现JS回文检查功能,适用于FreeCodeCamp项目?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1024个文字,预计阅读时间需要5分钟。
JS回文检查(FreeCodeCamp项目)思路和最终代码:
思路:
1.定义一个函数,接受一个字符串作为参数。
2.清理输入字符串,移除非字母数字字符,并将所有字符转换为小写。
3.检查清理后的字符串是否与其反转相同。
4.如果相同,返回true,表示是回文;否则返回false。
最终代码:
javascript
function palindrome(str) { // 清理字符串,移除非字母数字字符,转换为小写 var cleanedStr=str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();// 检查字符串是否与其反转相同 return cleanedStr===cleanedStr.split('').reverse().join('');}
// 测试console.log(palindrome(A man, a plan, a canal: Panama)); // trueconsole.log(palindrome(race a car)); // false
JS回文检查(FreeCodeCamp项目)的思路和最终代码 需求如果传入的字符串是回文字符串,则返回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");
本文共计1024个文字,预计阅读时间需要5分钟。
JS回文检查(FreeCodeCamp项目)思路和最终代码:
思路:
1.定义一个函数,接受一个字符串作为参数。
2.清理输入字符串,移除非字母数字字符,并将所有字符转换为小写。
3.检查清理后的字符串是否与其反转相同。
4.如果相同,返回true,表示是回文;否则返回false。
最终代码:
javascript
function palindrome(str) { // 清理字符串,移除非字母数字字符,转换为小写 var cleanedStr=str.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();// 检查字符串是否与其反转相同 return cleanedStr===cleanedStr.split('').reverse().join('');}
// 测试console.log(palindrome(A man, a plan, a canal: Panama)); // trueconsole.log(palindrome(race a car)); // false
JS回文检查(FreeCodeCamp项目)的思路和最终代码 需求如果传入的字符串是回文字符串,则返回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");

