leetcode 151. 翻转字符串里的单词

leetcode 151. 翻转字符串里的单词

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

题解:

1.翻转字符串的单词

2.以空格为分隔符

3.反转后的字符不包括多余空格

4.只在两单词间有一个空格

示例 1:

输入: "the sky is blue"

输出: "blue is sky the"

示例 2:

输入: "  hello world!  "

输出: "world! hello"

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

示例 3:

输入: "a good   example"

输出: "example good a"

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

说明:

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

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

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

进阶:

请选用 C 语言的用户尝试使用 O(1) 额外空间复杂度的原地解法(见思路二)

解题思路:

思路一:

  • 以空格为分隔符提取出字符串中的每个单词

  • 从后向前记录每个单词完成翻转

C/C++题解(点击蓝字阅读源码,或前往公众号回复“151”获取)

leetcode 151. 翻转字符串里的单词

Java题解(点击蓝字阅读源码,或前往公众号回复“151”获取)

leetcode 151. 翻转字符串里的单词

Python题解(点击蓝字阅读源码,或前往公众号回复“151”获取)

leetcode 151. 翻转字符串里的单词

例题来自力扣网https://leetcode-cn.com/

思路二:原地置换算法reverse(点击蓝字阅读源码,或前往公众号回复“151”获取)

class Solution {

public:

    string reverseWords(string s) {

leetcode 151. 翻转字符串里的单词

更多题解可前往公众号免费获取

leetcode 151. 翻转字符串里的单词