全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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参考手册

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

reverseString("hello");

一句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 表示全局搜索

这是我的方法:

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;
}

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

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

function palindrome (str) {
 // 删除字符串中不必要的字符
 var re = /[\W_]/g;
 // 将字符串变成小写字符
 var lowRegStr = str.toLowerCase().replace(re, '');
 // 如果字符串lowRegStr的length长度为0时,字符串即是palindrome
 if (lowRegStr.length === 0) {
 return true;
 }

 // 如果字符串的第一个和最后一个字符不相同,那么字符串就不是palindrome
 if (lowRegStr[0] !== lowRegStr[lowRegStr.length - 1]) {
 return false;
 } else {
 return palindrome(lowRegStr.slice(1, lowRegStr.length - 1));
 }
}

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

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Javascript能带来一定的帮助,如果有疑问大家可以留言交流。谢谢大家对的支持。


# javascript  # 回文  # s  # 翻转字符串  # js回文字符串  # JavaScript数据结构与算法之栈与队列  # JavaScript中数据结构与算法(一):栈  # JavaScript数据结构与算法之栈详解  # js如何找出字符串中的最长回文串  # javascript判断回文数详解及实现代码  # js-FCC算法-No repeats please字符串的全排列(详解)  # js实现字符全排列算法的简单方法  # 浅谈js中字符和数组一些基本算法题  # JS使用栈判断给定字符串是否是回文算法示例  # 下划线  # 这是  # 这句话  # 一个叫  # 递归  # 转成  # 运用了  # 亚当  # 正则表达式  # 切成  # 都是  # 是一个  # 过滤掉  # 我在  # 有个  # 第一个  # 一句  # 多远  # 则是  # 是怎么 


相关文章: 网站制作难吗安全吗,做一个网站需要多久时间?  济南网站建设制作公司,室内设计网站一般都有哪些功能?  建站之星各版本价格是多少?  如何在阿里云高效完成企业建站全流程?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  如何快速生成凡客建站的专业级图册?  中山网站制作网页,中山新生登记系统登记流程?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  如何用AWS免费套餐快速搭建高效网站?  如何通过山东自助建站平台快速注册域名?  家庭服务器如何搭建个人网站?  婚礼视频制作网站,学习*后期制作的网站有哪些?  如何在云服务器上快速搭建个人网站?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何快速搭建安全的FTP站点?  广州网站建站公司选择指南:建站流程与SEO优化关键词解析  Python多线程使用规范_线程安全解析【教程】  无锡营销型网站制作公司,无锡网选车牌流程?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  c# await 一个已经完成的Task会发生什么  如何在阿里云香港服务器快速搭建网站?  长沙做网站要多少钱,长沙国安网络怎么样?  建站之星导航配置指南:自助建站与SEO优化全解析  建站主机系统SEO优化与智能配置核心关键词操作指南  建站主机选哪种环境更利于SEO优化?  已有域名如何快速搭建专属网站?  电视网站制作tvbox接口,云海电视怎样自定义添加电视源?  建站主机选哪家性价比最高?  宝华建站服务条款解析:五站合一功能与SEO优化设置指南  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  浅析上传头像示例及其注意事项  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  利用JavaScript实现拖拽改变元素大小  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  香港服务器网站卡顿?如何解决网络延迟与负载问题?  北京网站制作网页,网站升级改版需要多久?  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  php json中文编码为null的解决办法  广州商城建站系统开发成本与周期如何控制?  建站之星如何通过成品分离优化网站效率?  ,怎么在广州志愿者网站注册?  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  宝塔面板创建网站无法访问?如何快速排查修复?  如何用景安虚拟主机手机版绑定域名建站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  较简单的网站制作软件有哪些,手机版网页制作用什么软件?  PHP 500报错的快速解决方法  陕西网站制作公司有哪些,陕西凌云电器有限公司官网? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。