牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,「student. a am i」。後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是「i am a student.」。cat對一一的翻轉這些單詞順序可不在行,你能幫助他麼?
思路:兩步反轉法,先整體反轉,然後每個單詞進行反轉。
找單詞的方法是找相應的空格。
如果start的位置是空格就++,如果end的地方是空格就--或者是末尾結束符,就進行反轉,一定要記得自己定義乙個反轉函式。
其他在單詞中間的情況就++end。找空格。
classsolution
}string reversesentence(string
str)
helper(str,
0,str.size() - 1
);
int start = 0,end = 0
;
while(str[start] != '\0'
)
else
if(str[end] == '
' || str[end] == '\0'
)
else
}return
str;
}};
這道題目還有進一步的變式題,就是兩個單詞之間有很多空格,最後只輸出乙個空格,這題的話,可以使用istringstream in(string),然後自己依據空格分割每乙個單詞,儲存到乙個陣列裡面,再從最後乙個單詞開始開始拼接,就得到了結果。
classsolution
istringstream ss(s);
string
tmp, result;
vector
no_space;
while (ss >>tmp)
if(no_space.size() == 0
)
inti;
for (i = no_space.size() - 1; i > 0; --i)
return
result;
}};
翻轉單詞順序列(第44題)
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....
劍指Offer 程式設計題 翻轉單詞順序列
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....
《劍指offer》面試題42 翻轉單詞順序列
牛客最近來了乙個新員工fish,每天早晨總是會拿著一本英文雜誌,寫些句子在本子上。同事cat對fish寫的內容頗感興趣,有一天他向fish借來翻看,但卻讀不懂它的意思。例如,student.a am i 後來才意識到,這傢伙原來把句子單詞的順序翻轉了,正確的句子應該是 i am a student....