題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。
例如輸入「i am a student.」,則輸出「student. a am i」。
分析:由於編寫字串相關**能夠反映程式設計師的程式設計能力和程式設計習慣,與字串相關的問題一直是程式設計師筆試、面試題的熱門題目。本題也曾多次受到包括微軟在內的大量公司的青睞。
由於本題需要翻轉句子,我們先顛倒句子中的所有字元。這時,不但翻轉了句子中單詞的順序,而且單詞內字元也被翻轉了。我們再顛倒每個單詞內的字元。由於單詞內的字元被翻轉兩次,因此順序仍然和輸入時的順序保持一致。
還是以上面的輸入為例子。翻轉「i am a student.」中所有字元得到「.tneduts a ma i」,再翻轉每個單詞中字元的順序得到「students. a am i」,正是符合要求的輸出。
參考**:
c++**
///
// reverse a string between two pointers
// input: pbegin - the begin pointer in a string
// pend - the end pointer in a string
///
voidreverse(char*pbegin,char*pend)
}
///
// reverse the word order in a sentence, but maintain the character
// order inside a word
// input: pdata - the sentence to be reversed
///
char* reversesentence(char*pdata)
// a word is between with pbegin and pend, reverse it
else
if(*pend == ' '
|| *pend == '\0'
)
else
}
returnpdata;
程式設計師面試題精選 翻轉句子中單詞的順序
題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設計師的程式設計能力和程式設計習慣,與字串相關的問題...
翻轉句子中單詞的順序(程式設計師面試題精選100題)
題目 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。例如輸入 i am a student.則輸出 student.a am i 分析 由於編寫字串相關 能夠反映程式設計師的程式設計能力和程式設計習慣,與字串相關的問題...
程式設計師面試題精選
問題描述 輸入乙個字串,列印出該字串中字元的所有排列。例如輸入字串abc,則輸出由字元a b c所能排列出來的所有字串abc acb bac bca cab和cba。問題分析 這是一道很好的考查對遞迴理解的程式設計題。寫遞迴程式關鍵有兩點,處理好進入與返回的關係,進入時改變了什麼,返回時應當恢復。字...