char *reverse_str(char *str) { size_t len = 0; unsigned int i, j; len = strlen(str); for(i=0,j=len-1; i方法二:折半對調法
折半對調法是我自己取的名,可能不是太准確勿怪。原理就是定義一個中間變量從頭尾開始依次交換直到走到字符串中間一個字符。char *reverse_str(char *str) { size_t len = 0; unsigned int i; char temp; len = strlen(str); for(i=0; i或者定義兩個變量i ,j char *reverse_str(char *str) { size_t len = 0; unsigned int i, j; char temp; len = strlen(str); for(i=0, j=len-1; i總結:無論是異或法和折半對調法,這兩種方法的時間復雜度和空間復雜度都很小。到目前為止是本人認為兩種比較可行的方法,如果大家有什麼更好的方法,歡迎分享交流。 網上也有很多其他的方法,像開辟新空間等方法這裡就不做介紹了,本人認為在代碼中如果可以做到不去申請新內存那就最好不要去做,一個變量可能覺得沒什麼但是積少成多,尤其是在嵌入式設備中,內存是很寶貴的,所以不建議這麼做。