首页 » 编程之美 » 正文

[leetcode_151]Reverse Words in a String

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 += " ";
        }
    }
};

发表评论