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