freeCodeCamp 学习记录——初级算法「01」翻转字符串

虚树潮涌
• 阅读 1824

从这篇开始与非将逐篇介绍在初级算法闯关中遇到的问题和记录,有疏漏和错误的地方希望大家可以帮忙指正。这里推荐一个MDN web docs网站,博客里的方法释义均来自此,点击相应位置可以获得详细释义。


问题描述

将一个字符串反转,得到相反顺序的字符串,比如 reverseString("hello") 返回"olleh"

所用方法

1、split() 点击查看完整释义

split()方法使用指定的分隔符字符串将一个String对象分割成字符串数组,以将字符串分隔为子字符串,以确定每个拆分的位置。

语法:

str.split([separator[, limit]])
  • separator 你指定的进行拆分的分隔符。
比如你对一个字符串想在空格处将它们分割成数组,通常来说是这样的,一句话中的单词根据空格分开,输入`"Webkit Moz O ms Khtml".split(" ")`,则输出一个数组`["Webkit", "Moz", "O", "ms", "Khtml"]`。`separator`可以是一个字符串或正则表达式,如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。
  • limit 一个整数,限定返回的分割片段数量。
如果 `limit` 为3,则返回找到的前 3 个分割元素。

2、reverse() 点击查看完整释义

reverse()方法将数组中元素的位置颠倒。 第一个数组元素成为最后一个数组元素,最后一个数组元素成为第一个。 reverse
方法颠倒数组中元素的位置,并返回该数组的引用。
注意⚠️只对数组起作用。

语法:

 arr.reverse()

3、join() 点击查看完整释义

join() 方法将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。
所有的数组元素被转换成字符串,再用一个分隔符将这些字符串连接起来。如果元素是 undefined 或者null
则会转化成空字符串。
注意⚠️`join()`方法,不会改变数组。

语法:

str = arr.join()
// 默认为 ","

str = arr.join("")
// 分隔符 === 空字符串 ""

str = arr.join(separator)
// 分隔符

刚好是 split() 方法的反运算。

解决思路

将一个字符串先用 split() 方法分解成一个数组,再用 reverse() 方法将数组翻转,因为reverse 方法只作用于数组,最后用 join() 方法将反转后的数组重新连接为字符串输出。

我的代码

function reverseString(str) {
  var strArray = str.split("");
  var strReverse = strArray.reverse();
  str = strReverse.join("");
  return str;
}

reverseString("hello");

一些问题

  • 一开始没有注意到 reverse 方法只能作用于数组。

「第 1 题完」

点赞
收藏
评论区
推荐文章
Karen110 Karen110
4年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
待兔 待兔
1年前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
从Nacos客户端视角来分析配置中心原理
Hello,大家好,我是麦洛,今天带大家一起从Nacos客户端视角来看看配置中心实现原理;整理这篇文章时候,也参照学习了部分大佬的博客,这里致谢;大家在阅读过程中如果发现错误或者问题,可以私信我交流,一起交流学习,一起进步;在开始阅读文章之前,有些思路我按我的理解先阐述一些,方便大家更快理清思路,不对的地方还请大家批评指正;1.Nacos客户端会在
Stella981 Stella981
3年前
LeetCode算法题
这是悦乐书的第258次更新,第271篇原创<br/01看题和准备今天介绍的是LeetCode算法题中Easy级别的第125题(顺位题号是551)。您将获得一个表示学生出勤记录的字符串。该记录仅包含以下三个字符:'A':缺席。'L':迟到。'P':在场。如果学生的出勤记录不超过一个“A”(缺席)或超过两个
Stella981 Stella981
3年前
LeetCode初级算法(数组)解答
这里记录了LeetCode初级算法中数组的一些题目:加一本来想先转成整数,加1后再转回去;耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错。classSolution{public:vector<intplusOne(vector<int&digit
Stella981 Stella981
3年前
SSL Certificate Signed Using Weak Hashing Algorithm 和SSL Medium Strength Cipher Suites Supported的...
这两天有个项目被扫描器报了几个中危,都是SSL证书的问题。记录一下解决方案吧。第一个问题:SSLCertificateSignedUsingWeakHashingAlgorithm这里的原因是因为使用弱算法签名的证书。解决方案查了下总结下来是换算法。操作步骤:  1、从证书颁发机构安装服务器的身份验证证书  2、在注册表H
Stella981 Stella981
3年前
SpringBoot(二)自动装配正文
\toc\前言        最近在学习SpringBoot相关的课程,过程中以笔记的形式记录下来,方便以后回忆,同时也在这里和大家探讨探讨,文章中有漏的或者有补充的、错误的都希望大家能够及时提出来,本人在此先谢谢了!开始之前呢,希望大家带着几个问题去学习:1、SpringBoot自动装配是什么?2、这个功
Easter79 Easter79
3年前
SpringBoot学习之路:01.开发环境搭建及概念叙述
        最近刚刚开始学习SpringBoot框架,在此记录自己的学习过程,记录自己在学习过程中遇到的坑,以及解决问题的过程,有不对的地方请各位批评指正,开始环境搭建之前先说说一些基本的概念:1.什么是SpringBoot    SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简
Stella981 Stella981
3年前
SpringBoot学习之路:01.开发环境搭建及概念叙述
        最近刚刚开始学习SpringBoot框架,在此记录自己的学习过程,记录自己在学习过程中遇到的坑,以及解决问题的过程,有不对的地方请各位批评指正,开始环境搭建之前先说说一些基本的概念:1.什么是SpringBoot    SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简
万字长文,聊聊我在锦礼成长的这一年
”学而不思则罔,思而不学则殆“,本文记录了作者在锦礼侧工作1年间遇到的思考与成长、挑战与困难,也是对过去工作的总结与反思,分享出来,希望对大家有所帮助。本文约10000字如果觉得页面很长那是因为截图和留言很多,哈哈00引言光阴似箭,来到锦礼产品线已满一年了