每日一题之- 简单 -反转字符串(557)

121 阅读1分钟
本题是字符串类型的题

难度:简单

题目557:给定一个字符串 s,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

示例 1:

输入:s = "Let's take LeetCode contest"
输出:"s'teL ekat edoCteeL tsetnoc"

提示:

  • 1 <= s.length <= 5 * 104

  • s 包含可打印的 ASCII 字符。

  • s 不包含任何开头或结尾空格。

  • s 里 至少 有一个词。

  • s 中的所有单词都用一个空格隔开。

    🧑 感想: 这是一道简单题中解决字符串类型问题中比较常见的解法,题目清晰易懂

    🧑 解题思路: 字符串根据单词翻转,翻转字符串一般我都会先切割成数组用数组的方法直接翻转。 但是这道题是单词翻转,所以我们先根据单词切割成数组。 然后遍历数组,再遍历数组中的每个项从后往前,放入一个新的结果集中。

    🧑 tips: 因为题目提示中显示,前后不包含空格,且单词都是用一个空格隔开,所以我们可以放心的使用空格切割字符串

function reverseWords(s: string): string {
  let sArr: string[] = s.split(' ')
  let result: string = ''
  sArr.forEach((item, index) => {
    for (let i = item.length - 1; i >= 0; i--) {
      result += item[i]
    }
    if (index + 1 !== sArr.length) {
      result += ' '
    }
  })
  return result
};