1. 程式人生 > >LintCode 53. 翻轉字符串

LintCode 53. 翻轉字符串

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. 翻轉字符串