題目:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。
對字串的操作,主要問題:一定要注意字串為null和訪問越界的情況!再就是找'\0'.
例如輸入字串;"i love you.",經過翻轉就變成:"you. love i"。看出來了嗎,故意的,(不論語法)呵呵!
方案一:兩次翻轉法。兩次翻轉法就是先對整個字串進行翻**".uoy evol i";第二次再翻轉對句子中的單個單詞進行翻**"you. love i"。這樣就成功了!該方案的關鍵點在於實現乙個字串的翻轉。
具體實現**:
#include
using namespace std;
char strr="jenny, i love you.";
void reverse(char *pbegin,char *pend)
{ if(null==pbegin || null==pend)
return;
while(pbegin
執行結果:
劍指Offer 翻轉單鏈表
定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。樣例輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null有兩種方法。一種直觀的方法是使用棧,利用棧先進後出的特性。將節點的值全部壓入棧,出棧的時候需要建立新的節點,連成鍊錶。這裡注意不要直接把鍊錶中的各個節點丟...
劍指 offer 42(動態規劃)連續陣列的最大值
輸入乙個整型陣列,陣列中的乙個或連續多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 示例1 輸入 nums 2,1,3,4,1,2,1,5,4 輸出 6 解釋 連續子陣列 4,1,2,1 的和最大,為 6。1 arr.length 10 5 100 arr i 100 cl...
劍指Offer 程式設計題42(翻轉單詞順序)
例如輸入字串 i am a student.則輸出 student.a am i 第一步翻轉句子中所有的字元。比如翻轉 i am a student.中所有的字元得到 tneduts a m a i 此時不但翻轉了句子中單詞的順序,連單詞內的字元順序也被翻轉了。第二步再翻轉每個單詞中字元的順序,就得...