題目1:輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變,標點符號和普通字母一樣處理。 例如輸入」i am a student.」, 則輸出」student. a am i」。
方法:第一步翻轉句子中所有的字元,第二步翻轉每個單詞中字元的順序。
void reverse(char* pbegin, char* pend)
while (pbegin < pend)
}char* reversesentence(char *pdata)
char *pbegin = pdata;
char *pend = pdata;
while (*pend != '\0')
pend--;
//翻轉整個句子
reverse(pbegin, pend);
//翻轉句子中的每個單詞
pbegin = pend = pdata;
while (*pbegin != '\0')
else
if (*pend == ' ' || *pend == '\0')
else
}return pdata;
}
測試用例:
題目2:字串的左旋轉操作是把字串前面的若干個字元轉移到字串的尾部。請定義乙個函式實現字串左旋轉操作的功能。比如輸入字串「abcdefg」和數字2,該函式將返回左旋轉2位得到的結果「cdefgab」。
方法:先翻轉0~k-1,k-1~length-1,在翻轉整個字串
char* leftrotatestring(char* pstr, int n)
}return pstr;
}
測試用例: 翻轉單詞順序 VS 左旋轉字串
全部內容來自 劍指offer 題目一 輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字元一樣處理。例如輸入字串 i am a student.則輸出 student.a am i answer void reverse char pbegin,char p...
演算法題目 翻轉單詞順序 VS 左旋轉字串
輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。include include include using namespace std void reverse char pbegin,char pend char reversesentence char pdata else if...
翻轉單詞順序和左旋轉字串
輸入乙個英文句子,翻轉句子中單詞的順序,但單詞內字元的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字串 i am a student.則輸出 student.a am i include using namespace std void reverse char p1,char p2 ...