[算法之道]之字符串逆序输出

浏览:
字体:
发布时间:2013-12-23 12:22:29
来源:

一、前言

字符串的逆序输出是一道经典面试题,要实现并不难,但是面试官希望看到的是面试者能否运用最简短的代码更高效的实现字符串的逆序功能。换句话说,就是做到三点:时间复杂度、空间复杂度、代码可读性。不管任何代码做到了这三点才算是好的代码。 那接下来我将介绍两种实现字符串逆序的方法,具体见下文。

二、实现字符串的逆序输出

方法一:异或法

这种方法是一种比较精简的方法,直接使用二进制来运算,更多的不说,看到代码大家就明白了。
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总结:无论是异或法和折半对调法,这两种方法的时间复杂度和空间复杂度都很小。到目前为止是本人认为两种比较可行的方法,如果大家有什么更好的方法,欢迎分享交流。网上也有很多其他的方法,像开辟新空间等方法这里就不做介绍了,本人认为在代码中如果可以做到不去申请新内存那就最好不要去做,一个变量可能觉得没什么但是积少成多,尤其是在嵌入式设备中,内存是很宝贵的,所以不建议这么做。
>更多相关文章
24小时热门资讯
24小时回复排行
资讯 | QQ | 安全 | 编程 | 数据库 | 系统 | 网络 | 考试 | 站长 | 关于东联 | 安全雇佣 | 搞笑视频大全 | 微信学院 | 视频课程 |
关于我们 | 联系我们 | 广告服务 | 免责申明 | 作品发布 | 网站地图 | 官方微博 | 技术培训
Copyright © 2007 - 2024 Vm888.Com. All Rights Reserved
粤公网安备 44060402001498号 粤ICP备19097316号 请遵循相关法律法规
');})();