本人所有解答并非最优或最简洁的解法,大部分步骤可以压缩或省略,写出来只为便于理解。
所有解答均有详细注释。
Reverse a String
翻转字符串
- 描述:
- 先把字符串转化成数组,再借助数组的
.reverse()
方法翻转数组顺序,最后把数组转化成字符串
- 解答:
1 | function reverseString(str) { |
Factorialize a Number
计算一个整数的阶乘
- 描述:
- 如果用字母
n
来代表一个整数,阶乘代表着所有小于或等于n
的整数的乘积
阶乘通常简写成n!
例如:5! = 1 * 2 * 3 * 4 * 5 = 120
- 解答:
- 根据阶乘定义,负数违法,
0
和1
的阶乘等于1
1 | function factorialize(num) { |
Check for Palindromes
检查回文字符串
- 描述:
- 如果给定的字符串是回文,返回
true
,反之,返回false
如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)
注意你需要去掉字符串多余的标点符号和空格,然后把字符串转化成小写来验证此字符串是否为回文
函数参数的值可以为racecar
,RaceCar
和race CAR
- 解答:
1 | function palindrome(str) { |
Find the Longest Word in a String
找出最长单词
- 描述:
- 在句子中找出最长的单词,并返回它的长度。
函数的返回值应该是一个数字。
- 解答:
1 | function findTheLongestWord(str) { |
Title Case a Sentence
句中单词首字母大写
- 描述:
- 确保字符串的每个单词首字母都大写,其余部分小写。
像the
和of
这样的连接符同理。
- 解答:
1 | function titleCase(str) { |
Return Largest Numbers in Arrays
找出多个数组中的最大数
- 描述:
- 右边大数组中包含了4个小数组,分别找到每个小数组中的最大值,然后把它们串联起来,形成一个新数组。
提示:你可以用for
循环来迭代数组,并通过arr[i]
的方式来访问数组的每个元素。
- 解答:
1 | function largestOfFour(arr) { |
Confirm the Ending
检查字符串结尾
- 描述:
- 判断一个字符串
str
是否以指定的字符串target
结尾。
如果是,返回true
如果不是,返回false
- 解答:
1 | function confirmEnding(str, target) { |
Repeat a string repeat a string
重复输出字符串
- 描述:
- 重复一个指定的字符串
num
次,如果num
是一个负数则返回一个空字符串
- 解答:
1 | function repeat(str, num) { |
Truncate a string
截断字符串
- 描述:
- 如果字符串的长度比指定的参数
num
长,则把多余的部分用...
来表示。
切记,插入到字符串尾部的三个点号也会计入字符串的长度。
但是,如果指定的参数num
小于或等于3,则添加的三个点号不会计入字符串的长度。
- 解答:
1 | function truncate(str, num) { |
Chunky Monkey
分割数组
- 描述:
- 把一个数组
arr
按照指定的数组大小size分割成若干个数组块。
例如:chunk([1,2,3,4],2)=[[1,2],[3,4]]
;chunk([1,2,3,4,5],2)=[[1,2],[3,4],[5]]
- 解答:
1 | function chunk(arr, size) { |
Slasher Flick
截断数组
- 描述:
- 返回一个数组被截断
n
个元素后还剩余的元素,截断从索引0开始。
- 解答:
用.splice()
方法截取数组,此方法会改变原数组
1 | function slasher(arr, howMany) { |
Falsy Bouncer
过滤数组假值
- 描述:
- 删除数组中的所有假值。
在JavaScript
中,假值有false
、null
、0
、""
、undefined
和NaN
- 解答:
1 | function bouncer(arr) { |
Seek and Destroy
摧毁数组
- 描述:
- 实现一个
destroyer()
函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。
- 解答:
1 | function destroyer(arr) { |
Where do I belong
数组排序并找出元素索引
- 描述:
- 先给数组排序,然后找到指定的值在数组的位置,最后返回位置对应的索引。
举例:where([1,2,3,4], 1.5) 应该返回1。因为1.5插入到数组[1,2,3,4]后变成[1,1.5,2,3,4],而1.5对应的索引值就是1。同理:where([20,3,5],19)应该返回2。因为数组会先排序为[3,5,20],19插入到数组[3,5,20]后变成[3,5,19,20],而19对应的索引值就是2。
- 解答:
1 | function where(arr, num) { |
Caesars Cipher
凯撒密码
- 描述:
- 下面我们来介绍风靡全球的凯撒密码
Caesar cipher
,又叫移位密码。
移位密码也就是密码中的字母会按照指定的数量来做移位。
一个常见的案例就是ROT13
密码,字母会移位13个位置。由'A' ↔ 'N'
,'B' ↔ 'O'
,以此类推。
写一个ROT13
函数,实现输入加密字符串,输出解密字符串。
所有的字母都是大写,不要转化任何非字母形式的字符(例如:空格,标点符号),遇到这些特殊字符,跳过它们。
- 解答:
1 | function rot13(str) { |