557.字符串反转

给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。

整体思路:

  1. 将字符串以空格为分隔符,将每一个单词放进数组
  2. 在函数里处理每一个单词,将一个单词转为数组,使用reverse方法将数组反转(即将一个单词反转)
  3. 反转以后,将一个单词构成的数组转为字符串
  4. 最后将几个单词组成的数组用join转为字符串

注意:

  1. 最后还有join,因为要将每一个单词(几个字母组成的字符串)组成字符串
  2. 空格作为分隔符

提交

1
2
3
4
let arr = str.split(' ');
return arr.map(item => {
return item.split('').reverse().join('')
}).join(" ")

利用Jest工具进行代码测试

1
2
3
4
5
import leetcode557 from '../../code/string/lesson1'

test('557. 反转字符串中的单词 III', () => {
expect(leetcode557("Let's take LeetCode contest")).toBe("s'teL ekat edoCteeL tsetnoc")
})

知识点:

  • map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
1
2
3
4
5
6
7
var array1 = [1, 4, 9, 16];

// pass a function to map
const map1 = array1.map(x => x * 2);

console.log(map1);
// expected output: Array [2, 8, 18, 32]
  • split() 方法用于把一个字符串分割成字符串数组。
    语法
    stringObject.split(separator,howmany)
1
2
3
4
5
6
7
8
9
10
var str="How are you doing today?"

document.write(str.split(" ") + "<br />")
document.write(str.split("") + "<br />")
document.write(str.split(" ",3))

结果:
How,are,you,doing,today?
H,o,w, ,a,r,e, ,y,o,u, ,d,o,i,n,g, ,t,o,d,a,y,?
How,are,you
  • reverse() 方法用于颠倒数组中元素的顺序。
    该方法会改变原来的数组,而不会创建新的数组。

  • join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
    语法
    arrayObject.join(separator)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var arr = new Array(3);
arr[0] = "George"
arr[1] = "John"
arr[2] = "Thomas"

document.write(arr.join());

document.write("<br />");

document.write(arr.join("."));

结果
George,John,Thomas
George.John.Thomas