日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]

發布時間:2025/3/21 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员面试题精选100题(07)-翻转句子中单词的顺序[算法] 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

例如輸入“I am a student.”,則輸出“student. a am I”。

分析:由于編寫字符串相關代碼能夠反映程序員的編程能力和編程習慣,與字符串相關的問題一直是程序員筆試、面試題的熱門題目。本題也曾多次受到包括微軟在內的大量公司的青睞。

由于本題需要翻轉句子,我們先顛倒句子中的所有字符。這時,不但翻轉了句子中單詞的順序,而且單詞內字符也被翻轉了。我們再顛倒每個單詞內的字符。由于單詞內的字符被翻轉兩次,因此順序仍然和輸入時的順序保持一致。

還是以上面的輸入為例子。翻轉“I am a student.”中所有字符得到“.tneduts a ma I”,再翻轉每個單詞中字符的順序得到“students. a am I”,正是符合要求的輸出。

參考代碼:

/// // Reverse a string between two pointers // Input: pBegin - the begin pointer in a string // pEnd - the end pointer in a string /// void Reverse(char *pBegin, char *pEnd) {if(pBegin == NULL || pEnd == NULL)return;while(pBegin < pEnd){char temp = *pBegin;*pBegin = *pEnd;*pEnd = temp;pBegin ++, 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) {if(pData == NULL)return NULL;char *pBegin = pData;char *pEnd = pData;while(*pEnd != '\0')pEnd ++;pEnd--;// Reverse the whole sentenceReverse(pBegin, pEnd);// Reverse every word in the sentencepBegin = pEnd = pData;while(*pBegin != '\0'){if(*pBegin == ' '){pBegin ++;pEnd ++;continue;}// A word is between with pBegin and pEnd, reverse itelse if(*pEnd == ' ' || *pEnd == '\0'){Reverse(pBegin, --pEnd);pBegin = ++pEnd;}else{pEnd ++;}}return pData; }

????????????

本文已經收錄到《劍指Offer——名企面試官精講典型編程題》一書中,有改動,書中的分析講解更加詳細,討論了這個題目和左旋轉字符串的聯系,舉一反三。歡迎關注。本文的英文版詳見http://codercareer.blogspot.com/2011/09/no-07-reverse-words-in-sentence.html,歡迎感興趣的朋友閱讀并批評指正。

本題已被九度Online Judge系統收錄,歡迎讀者移步到http://ac.jobdu.com/hhtproblems.php在線測試自己的代碼。

博主何海濤對本博客文章享有版權。網絡轉載請注明出處http://zhedahht.blog.163.com/。整理出版物請和作者聯系。

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的程序员面试题精选100题(07)-翻转句子中单词的顺序[算法]的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。