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.
解题思路:
1、若用C#实现,非常简单,用字符串的split函数,将非空的子串倒着连接起来即可。
2、C++似乎没有split函数,需要我们自己实现一下,返回vector<string>类型。但是这样需要扫描两次字符串。
3、可以只扫描一次字符串。下面是代码。有几个特殊情况需要考虑(1)可能会有多个空格符(2)可能没有空格符
class Solution {
public:
void reverseWords(string &s) {
string result="";
int len = s.length();
string word="";
for(int i=0; i<len; i++){
if(s[i]!=' '){
word += s[i];
}else{
if(word!=""){
if(result!=""){
word += " ";
}
result = word + result;
word="";
}
}
}
if(word!=""){ //这里不要忘了
if(result!=""){
word += " ";
}
result = word + result;
}
s=result;
}
};[LeetCode] Reverse Words in a String
原文地址:http://blog.csdn.net/kangrydotnet/article/details/45048807