Lintcode 53. 翻轉字符串中的單詞

描述

給定一個字符串,逐個翻轉字符串中的每個單詞。

說明
·單詞的構成:無空格字母構成一個單詞,有些單詞末尾會帶有標點符號
·輸入字符串是否包括前導或者尾隨空格?可以包括,但是反轉後的字符不能包括
·如何處理兩個單詞間的多個空格?在反轉字符串中間空格減少到只含一個
樣例

樣例 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;
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章