百度面試題:字符串翻轉代碼

wdey 9年前發布 | 908 次閱讀 C/C++

給定一個字符串,比如“abcdef”,要求寫一個函數,將字符串翻轉成“defabc”,或者翻轉成“efabcd”,字串位數要求是可變的。
此題還是2011年考研數據結構壓軸大題,在百度面前也就是一面第一題。可見百度一斑。
解法是將字符串進行3次翻轉,第一次翻轉整個字符串,第二次跟第三次翻轉部分字符串。

#include<stdio.h>

void swap(char str,int n) { char temp; char p,q; p = str; q = str + n - 1; while(p < q) { temp = p; p = q; q = temp; p++; q--;
} } void reserve(char
str,int n) { swap(str,strlen(str)); swap(str,n); swap(str+n,strlen(str)-n); } int main(int argc,char *argv[]) { char str[10] = "abcdef"; printf("%s\n",str); reserve(str,3); //3是翻轉的位數 printf("%s\n",str); return 0; }</pre>

 本文由用戶 wdey 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!