首页 > 语言 > JavaScript > 正文

javascript基础练习之翻转字符串与回文

2024-05-06 15:11:06
字体:
来源:转载
供稿:网友

翻转字符串

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

测试用例

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

实现思路

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

    String.split() Array.reverse() Array.join()

具体可以去看JavaScript参考手册

function reverseString(str) { return str.split('').reverse().join('');}reverseString("hello");

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

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

回文

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

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

测试用例

    palindrome("Race Car") 应该返回 true palindrome("not a palindrome") 应该返回 false 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 表示全局搜索

这是我的方法:

function palindrome(str) { str = str.replace(/[/W_]/g,'').toLowerCase(); var reverseStr = str.split('').reverse().join(''); return str===reverseStr;}palindrome("eye");

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

function palindrome (str) { var reg = /[/W_]/g, regStr = str.toLowerCase().replace(reg, ''), len = regStr.length; for (var i = 0, halfLen = len / 2; i < halfLen; i++){ if (regStr[i] !== regStr[len - 1 - i]) {  return false; } } return true;}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选