151. Reverse Words in a String

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

For example,
Given s = "the sky is blue",
return "blue is sky the".

Update (2015-02-12):
For C programmers: Try to solve it in-place in O(1) space.

click to show clarification.

Clarification:

  • What constitutes a word?
    A sequence of non-space characters constitutes a word.
  • Could the input string contain leading or trailing spaces?
    Yes. However, your reversed string should not contain leading or trailing spaces.
  • How about multiple spaces between two words?
    Reduce them to a single space in the reversed string.

=====================

注意,

1,被空格包围的是单词

2,输入字符串可以以空格开头或结尾,但是结果中的字符不能以空格开头或结尾

3,输出字符串中单词间的空格是一个,不能重复出现空格.

思路:

对输入字符串进行去重空格操作,

对字符串中的每个单词进行反转

对整个字符串进行反转

====

code

class Solution {
public:
    void help_reverse(string &s,int start,int end){
        while(start<end){///经典的反转字符串方法
            swap(s[start++],s[end--]);
        }
    }
    string removeDuplicateSpace(string s){
        string res;
        int b = 0;
        for(;b<(int)s.size();b++){
            if(s[b]!= ‘ ‘){
                break;
            }
        }///
        int e = s.size() - 1;
        for(;e>=0;e--){
            if(s[e]!=‘ ‘){
                break;
            }
        }

        bool is_space = false;
        for(int i = b;i<=e;i++){
            if(s[i] == ‘ ‘){
                if(!is_space) is_space = true;
                else continue;
            }else{
                is_space = false;
            }
            res.push_back(s[i]);
        }
        return res;
    }
    void reverseWords(string &s) {
        if(s.empty()) return;
        s = removeDuplicateSpace(s);
        int start = 0;
        for(size_t i = 0;i<s.size();i++){
            if(s[i]!=‘ ‘){
                start = i;
            }else{
                continue;
            }
            size_t j = i;
            while(j<s.size() && s[j]!=‘ ‘){
                j++;
            }
            j--;
            help_reverse(s,start,j);
            i = j++;
        }
        help_reverse(s,0,(int)s.size()-1);
    }
};
时间: 2024-10-12 23:28:16

151. Reverse Words in a String的相关文章

[LeetCode]151.Reverse Words in a String

题目 Given an input string, reverse the string word by word. For example, Given s = "the sky is blue", return "blue is sky the". Update (2015-02-12): For C programmers: Try to solve it in-place in O(1) space. click to show clarification.

leetCode 151. Reverse Words in a String 字符串反转 | Medium

151. Reverse Words in a String Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". 题目大意: 输入一个字符串,将单词序列反转. 思路1: 采用一个vector,来存放中间结果 将vector的结果倒序放入原字符串中. 思路2: 在字符串分割的时候

151. Reverse Words in a String &amp;&amp; 61. Rotate List &amp;&amp; 189. Rotate Array

151. Reverse Words in a String Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". What constitutes a word?A sequence of non-space characters constitutes a word. Cou

[LeetCode] 151. Reverse Words in a String 翻转字符串中的单词

Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". Update (2015-02-12):For C programmers: Try to solve it in-place in O(1) space. Clarification: What constitutes a

Leetcode 448. Find All Numbers Disappeared in an Array JAVA语言151. Reverse Words in a String

Given an input string, reverse the string word by word. For example, Given s = "the sky is blue", return "blue is sky the". Update (2015-02-12): For C programmers: Try to solve it in-place in O(1) space. 题意:反转字符串中的单词,注意空格的处理!!! public 

151. Reverse Words in a String (String)

思路: 本题考查的目的并不是使用字符串的函数.方法是两次reverse,先对每个单词先做一次翻转,然后对整个字符串做一次翻转. 需要注意的是去除extra space,并且对全space字符串.以及最后一个单词要做特殊处理. class Solution { public: void reverseWords(string &s) { int start = 0; int end=-1; int i = 0; int cur = 0; // point to the string with ex

leetcode 151. Reverse Words in a String --------- java

Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". Update (2015-02-12):For C programmers: Try to solve it in-place in O(1) space. 倒序字符串. 注意使用BufferString,因为如果使用Stri

[leedcode 151] Reverse Words in a String

Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". Update (2015-02-12):For C programmers: Try to solve it in-place in O(1) space. public class Solution { public Str

(String)151. Reverse Words in a String

Given an input string, reverse the string word by word. For example,Given s = "the sky is blue",return "blue is sky the". public class Solution { public String reverseWords(String s) { String afterTrim= s.trim(); String[] split=afterTr