一开始想到的笨方法,外层循环循环以空格为标志位,一次截取单词反转,更新输入数据,进行处理;超级慢,第二个是借鉴大佬的,简单,高效
class Solution {
public:
string reverseWords(string s) {
int length = s.size();
string c = “”;
while(1){
string a = s.substr(0,s.find_first_of(" "));
int b = a.length()-1;
for(int i=0; i<a.length()/2; ++i){
swap(a[i], a[b-i]);
}
c=c+a+" ";
if (s.find(" ") == -1)
break;
s = s.substr(s.find_first_of(" ")+1);
}
int d = c.size();
c=c.substr(0,d-1);
return c;
}
};
第二个:
class Solution {
public:
string reverseWords(string s) {
int index = 0;
for(int i = 0; i <= s.length(); ++i) {
if(s[i] == ’ ’ || i == s.length()) {
std::reverse(s.begin() + index, s.begin() + i);
index = i + 1;
}
}
return s;
}
};