[leetcode_151]Reverse Words in a String

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
class Solution 
{
public:
    int getFirstLetter(string &s,int start)
    {
        int i;
        for(i = start;i < s.length();i++)
        {
            if(s[i] != ' ')return i;
        }
        return i;
    }
    int getFirstBlank(string &s,int start)
    {
        int i;
        for(i = start;i < s.length();i++)
        {
            if(s[i] == ' ')return i;
        }
        return i;
    }
    void reverseWords(string &s) {
        vector<string> splits;
        splits.clear();
        int i = 0;
        while(i < s.length())
        {
            i = getFirstLetter(s,i);
            if(i >= s.length())break;
            int next = getFirstBlank(s,i+1);
            if(next >= s.length())
            {
                next = s.length()-1;
                splits.push_back(s.substr(i,next-i+1));
                break;
            }
            splits.push_back(s.substr(i,next-i));
            i = next;
        }
        s = "";
        for(int i = splits.size()-1;i >= 0;i--)
        {
            s += splits[i];
            if(i != 0)s += " ";
        }
    }
};
Licensed under CC BY-NC-SA 4.0