本文共 884 字,大约阅读时间需要 2 分钟。
有人考我字符串逆序的算法,我居然写不上来,懊恼死了。
当时脑海里想的是用堆栈的算法,可是又不会写,至于递归,硬是没想到。
题目:实现字符串逆序函数 reverse(char *str)
答案:
1。最简单的,不一定规范但能实现。
void reverse( char * str) ... { if (!*str) return; fun(str+1); printf("%c",*str); }
2。比较规范的C
char * reverse( char * cpSource) ... { static char *cpTemp = NULL; if(cpTemp == NULL) cpTemp = cpSource; if(*(cpSource+1)) reverse(cpSource+1); if(cpSource-cpTemp > 0) ...{ char cTemp = *cpTemp; *cpTemp++ = *cpSource; *cpSource = cTemp; } return cpSource; }
3。另外找了个ARM汇编的版本
data segmentstring1 db ' abcdefg ' count equ $ - string1string2 db count dup( ? ), ' $ ' data endscode segmentassume cs:code,ds:datastart:mov ax,data mov ds,ax mov cx,count mov si,offset string1 add si,cx dec si mov di,offset string2lop1: mov al,[si] mov [di],al dec si inc diloop lop1mov dx,offset string2mov ah, 9 int 21hmov ah,4ch int 21hcode endsend start
附:参考地址
这里就给汇编的,C的太多了,随便搜搜就能找到。
转载地址:http://yogji.baihongyu.com/