描述
給定一個字符串,逐個翻轉字符串中的每個單詞。
說明
·單詞的構成:無空格字母構成一個單詞,有些單詞末尾會帶有標點符號
·輸入字符串是否包括前導或者尾隨空格?可以包括,但是反轉後的字符不能包括
·如何處理兩個單詞間的多個空格?在反轉字符串中間空格減少到只含一個
樣例
樣例 1:
輸入: “the sky is blue”
輸出: “blue is sky the”
樣例 2:
輸入: “hello world”
輸出: “world hello”
個人做法比較麻煩:
先用一個flag 記錄是否遇到了單詞
之後a存單詞第一個字母下標
b存單詞結尾下標
在一句話最後進行一個判斷
把單詞都存起來
最後連接,返回
class Solution {
public:
/*
* @param s: A string
* @return: A string
*/
string reverseWords(string &s) {
std::vector<string> ss;
string as="";
int index=0;
int a=-1,b=-1;
int flag=0;
for(int i=0; i<s.size(); i++) {
if(s[i]!=' '&&flag==0) {
a=i;
flag=1;
}
if( (s[i]==' '||i==s.size()-1) &&flag==1) {
if(i==s.size()-1){
b=i+1;
}else{
b=i;
}
for(int j=a;j<b;j++){
as += s[j];
}
ss.push_back(as);
as="";
flag=0;
continue;
}
}
string re="";
for(int i=ss.size()-1; i>=0; i--) {
re += ss[i];
if(i!=0) {
re+=" ";
}
}
return re;
}
};