比起POJ弱爆了一題,從后往前掃描一遍,O(n)時間,僅僅要注意各種極端情況就可以,不明確通過率為什么僅僅有13%。
#include<iostream>
#include<string>
using namespace std;class Solution {
public:void reverseWords(string &s) {char* cstr = new char[s.size()+1];int cc = 0;int revstrC = s.size() - 1;while (revstrC >= 0){while (revstrC>=0 && s.at(revstrC) == ' '){revstrC--;}if (revstrC >= 0)//find the end of a word{int end = revstrC;while (revstrC >= 0 && s.at(revstrC) != ' ')revstrC--;s.copy(cstr+cc, end-revstrC, revstrC+1);cc = cc + end - revstrC;cstr[cc] = ' ';cc++;}}cstr[cc-1] = '\0';s.assign(cstr);}
};int main()
{Solution sol;string str = " Hello fwe asg wf vergv ";sol.reverseWords(str);cout << str << endl;
}