每天一道C\C++笔试题IV---翻转字符串
这也是笔试中一道经典的C语言题:
给定一个字符串,将其翻转。如abc ==> cba
拿到此题时,我是想都没想,直接说,再用一个字符串tmp来缓存一下此串,然后一个for循环赋值搞定。
思路有了,代码就有了。
D:\workspace\C\revert_string>gcc -o revert revert_string.c -std=c99D:\workspace\C\revert_string>revertplease input less than 20 char:abcyour input string is abclength is 3tmp is astring[0] is cstring[2] is aafter revert:cbaD:\workspace\C\revert_string>revertplease input less than 20 char:abcdyour input string is abcdlength is 4tmp is astring[0] is dstring[3] is atmp is bstring[1] is cstring[2] is bafter revert:dcba
这样的算法,相比之前要提高甚多效率。只要开动脑筋,世界会更加优雅。
- 1楼lvjing_CSDN昨天 13:17
- void reverse(char *str)n{n #undef SWAPn #define SWAP(x,y) (*x) = (*x)^(*y);(*y) = (*x)^(*y);(*x)= (*x)^(*y)n char *head,*tail,*stop;n head = tail =str;n while(*tail != '\0')n ++tail;n stop = head+(tail-head)/2;n while(head != stop)n {n --tail;n SWAP(head,tail);n ++head;n }n #undef SWAPn}