翻轉句子中單詞的順序

2021-06-28 05:43:27 字數 876 閱讀 2940

題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。比如輸入"i love you.",輸出"you. love i"。

解題思路:

我們可以先翻轉整個字串,然後再翻轉字串中的每個單詞。比如"i love you."翻轉整個字串後得到".uoy evol i",再翻轉字串中的每乙個單詞得到"you. love i"。當然也可以先翻轉字串中的每個單詞,翻轉整個字串。注意多個空格連續時還是當成乙個分隔符,比如"  i love you.  "翻轉句子後變成"  you. love i  "。

演算法實現:

void reversesentence(char str)

start=n;

while(str[n]!=' '&&str[n]!='\0')

temp=str[n];//儲存翻轉單詞的後乙個字元,在這裡是' '字元或'\0'結束符

str[n]='\0';

reversestr(str+start);

str[n]=temp;//恢復翻轉單詞的後乙個字元

if(str[n]=='\0') break;//跳出迴圈

n++;

}}

reversestr()方法我的一篇博文有它的具體實現:字串翻轉

ps:這裡翻轉單詞時,可以通過在翻轉字串的基礎上,另外再傳遞乙個結束指標實現,很多人都是這樣實現的。但是我前面已經寫了乙個翻轉字串的方法,不想再改這個方法,讓它接受兩個引數的傳遞,所以我用了乙個輔助字元,當要翻轉單詞時,我儲存翻轉單詞的後乙個字元,然後令翻轉單詞的後乙個字元為'\0',翻轉完該單詞後就恢復翻轉單詞的後乙個字元。

翻轉句子中單詞的順序

題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設計師的程式設計能力和程式設計習慣,與字串相關的問題...

翻轉句子中單詞的順序

程式設計師面試題精選 07 翻轉句子中單詞的順序 題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設...

翻轉句子中單詞的順序

翻轉句子中單詞的順序。題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 第乙個想法是借助棧實現,每解析乙個單詞壓棧,解析完依次出棧,要求額...