资讯专栏INFORMATION COLUMN

LeetCode 之 JavaScript 解答第151题 —— 反转字符串中的单词

betacat / 799人阅读

摘要:小鹿题目翻转字符串里的单词给定一个字符串,逐个翻转字符串中的每个单词。说明无空格字符构成一个单词。遇到空格之后,将单词进行倒序拼接。消除尾部的空格。测试用例空字符串。中间空格大于的字符串。

Time:2019/4/20
Title: Reverse Words In a String
Difficulty: Midumn
Author: 小鹿

题目:Reverse Words In a String(翻转字符串里的单词)

Given an input string, reverse the string word by word.

给定一个字符串,逐个翻转字符串中的每个单词。

Example 1:

Input: "the sky is blue"
Output: "blue is sky the"

Example 2:

Input: "  hello world!  "
Output: "world! hello"
Explanation: Your reversed string should not contain leading or trailing spaces.

Example 3:

Input: "a good   example"
Output: "example good a"
Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.

Note:

A word is defined as a sequence of non-space characters.

Input string may contain leading or trailing spaces. However, your reversed string should not contain leading or trailing spaces.

You need to reduce multiple spaces between two words to a single space in the reversed string.

说明:

无空格字符构成一个单词。

输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

Solve:
▉ 问题分析
所有的单词进行倒序输出,且单词之间的空格只需保留一个,句子前后的空格全部清除。通过题目具体要求,我们已经对问题分析清除,只要解决怎么消除句子前后空格,以及倒序拼接单词,将单词之间的空格数减少至一就可以完成此题作答。
▉ 算法思路
1)跳过句子前所有空格。

2)借助变量反转单词,每遍历到一个字符,在遇到下一个空格之前,为一个完整单词。

3)遇到空格之后,将单词进行倒序拼接。

4)消除尾部的空格。

▉ 测试用例
1)空字符串。

2)中间空格大于 1 的字符串。

3)单词中有标点符号的字符串。

▉ 代码实现
 var reverseWords = function(s) {
     // 判断当前的单词是否为空字符串
     if(s.length === 0) return "";

     let [index,len] = [0,s.length];
     let word = "";
     let result = "";

     while(index < len){
         // 跳过空格
         while(index < len && s.charAt(index) == " "){
             index ++;
         }

         // 反转单词
         while(index < len && s.charAt(index) !== " "){
             word = `${word}${s.charAt(index)}`;
             index ++;
         }
         // 拼接
         result = word + " " + result;
         word = "";
     }
     return result.trim(); 
 };


欢迎一起加入到 LeetCode 开源 Github 仓库,可以向 me 提交您其他语言的代码。在仓库上坚持和小伙伴们一起打卡,共同完善我们的开源小仓库!
Github:https://github.com/luxiangqia...

欢迎关注我个人公众号:「一个不甘平凡的码农」,记录了自己一路自学编程的故事。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103773.html

相关文章

  • LeetCode JavaScript 解答344 —— 反转符串(Reverse Str

    摘要:小鹿题目反转字符串编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组的形式给出。如果为奇数,当两个指针相等时,反转完毕。测试用例空字符串。奇数个数的字符串。长度为的字符串。考查内容对字符串的基本操作。 Time:2019/4/18Title: Reverse StringDifficulty: EasyAuthor: 小鹿 题目:Reverse String(反转字...

    bbbbbb 评论0 收藏0
  • LeetCode JavaScript 解答206 —— 反转链表(Reverse Link

    摘要:算法思路两种方法一般反转递归法一般解决定义三个指针,分别为,存储当前结点,指向反转好的结点的头结点,存储下一结点信息。递归法重点分析先确定终止条件当下一结点为时,返回当前节点判断当前的链表是否为递归找到尾结点,将其存储为头结点。 Time:2019/4/23Title: Reverse Linked ListDifficulty: EasyAuthor: 小鹿 题目:Reverse...

    zhangfaliang 评论0 收藏0
  • LeetCode JavaScript 解答226 —— 翻转二叉树(Invert Bina

    摘要:算法思路判断树是否为空同时也是终止条件。分别对左右子树进行递归。代码实现判断当前树是否为左右子树结点交换分别对左右子树进行递归返回树的根节点欢迎一起加入到开源仓库,可以向提交您其他语言的代码。 Time:2019/4/21Title: Invert Binary TreeDifficulty: EasyAuthor: 小鹿 题目:Invert Binary Tree(反转二叉树) ...

    MingjunYang 评论0 收藏0
  • LeetCode 151:给定一个符串,逐个翻转符串中的每个单词 Reverse Words i

    摘要:说明无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。我们将字符串转为字符型数组并用两个指针来解这道题。指针作为原字符串转为字符数组的索引,从右向左移。 公众号:爱写bug(ID:icodebugs) 翻转字符串里的单词 Given an input string, reverse the string word by word. 示例 1:...

    red_bricks 评论0 收藏0
  • LeetCode 151:给定一个符串,逐个翻转符串中的每个单词 Reverse Words i

    摘要:说明无空格字符构成一个单词。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。我们将字符串转为字符型数组并用两个指针来解这道题。指针作为原字符串转为字符数组的索引,从右向左移。 公众号:爱写bug(ID:icodebugs) 翻转字符串里的单词 Given an input string, reverse the string word by word. 示例 1:...

    dongxiawu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<