按單詞反轉字串
阿新 • • 發佈:2018-12-21
並不是簡單的字串反轉,而是按給定字串裡的單詞將字串倒轉過來,就是說字串裡面的單詞還是保持原來的順序,這裡的每個單詞用空格分開。例如:Here is www.zhuxinquan.com經過反轉後變為:www.zhuxinquan.com is Here
如果只是簡單的將所有字串翻轉的話,可以遍歷字串,將第一個字元和最後一個交換,第二個和倒數第二個交換,依次迴圈。其實按照單詞反轉的話可以在第一遍遍歷的基礎上,再遍歷一遍字串,對每一個單詞再反轉一次。這樣每個單詞又恢復了原來的順序。
先參考文章:
http://www.360doc.com/content/14/0306/23/16145154_358375004.shtml
自己實現的:
void reverse_str(char* strInput,int nStart,int nEnd){ if ( nStart >= nEnd || nStart <0 || nEnd >= strlen(strInput)) { return; } while(nStart < nEnd) { char cTemp = strInput[nStart]; strInput[nStart] = strInput[nEnd]; strInput[nEnd] = cTemp; nStart++; nEnd--; }}//完成單詞倒轉,比如"i am who"轉換成"who am i" void reverse_word(char* strInput){ //轉換成ohm ma i reverse_str(strInput,0,strlen(strInput)-1); //ohw ma i 每個單詞反轉 char* strStart = strInput; int nStart = 0; int nEnd = 0; while( *strInput != '\0') { if ( *strInput == ' ') { reverse_str(strStart,nStart,nEnd-1); nStart = nEnd +1; strStart = strInput; } nEnd ++; strInput ++; }}