LintCode 53. 翻轉字符串
阿新 • • 發佈:2018-01-27
log lin ast pen param begin 結果 tco const
題目:給定一個字符串,逐個翻轉字符串中的每個單詞。
說明
- 單詞的構成:無空格字母構成一個單詞
- 輸入字符串是否包括前導或者尾隨空格?可以包括,但是反轉後的字符不能包括
- 如何處理兩個單詞間的多個空格?在反轉字符串中間空格減少到只含一個
解:先將整個字符串反轉,再將每個單詞再反轉,處理好空格,就是正確結果。
class Solution { public: /* * @param s: A string * @return: A string */ string reverseWords(string &s) {// write your code here string res; if(s.empty()) return s; reverse(s.begin(),s.end());//將整個字符串反轉 char *stoc= const_cast<char*>(s.data());//將string轉char*。先將string轉const char*再轉char* char *tmpStr = strtok(stoc," "); while (tmpStr != NULL) //通過空格將字符串分割成多個單詞 {if(tmpStr!=" ") { string temp=(string)tmpStr; reverse(temp.begin(),temp.end());//再將單詞反轉 res.append(" "); res.append(temp);//res最後的格式:空格+單詞A+空格+單詞B } tmpStr = strtok(NULL, " "); }//刪除開頭的空格 if(!res.empty()) { res.erase(0,res.find_first_not_of(" ")); } return res; } };
LintCode 53. 翻轉字符串