[算法之道]之字符串逆序输出
一、前言
字符串的逆序输出是一道经典面试题,要实现并不难,但是面试官希望看到的是面试者能否运用最简短的代码更高效的实现字符串的逆序功能。换句话说,就是做到三点:时间复杂度、空间复杂度、代码可读性。不管任何代码做到了这三点才算是好的代码。 那接下来我将介绍两种实现字符串逆序的方法,具体见下文。二、实现字符串的逆序输出
方法一:异或法
这种方法是一种比较精简的方法,直接使用二进制来运算,更多的不说,看到代码大家就明白了。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总结:无论是异或法和折半对调法,这两种方法的时间复杂度和空间复杂度都很小。到目前为止是本人认为两种比较可行的方法,如果大家有什么更好的方法,欢迎分享交流。网上也有很多其他的方法,像开辟新空间等方法这里就不做介绍了,本人认为在代码中如果可以做到不去申请新内存那就最好不要去做,一个变量可能觉得没什么但是积少成多,尤其是在嵌入式设备中,内存是很宝贵的,所以不建议这么做。
>更多相关文章
- 09-29如何通过wrap malloc定位C/C++程序的内存泄漏
- 02-25打车软件大战升级,补贴还能维持多久?
- 12-23BMP文件右旋90度[c语言]
- 12-23寻找直方图中面积最大的矩形(C语言版)
- 12-23[ndk,2]ndk开发案例和错误处理
- 12-23[ndk,1]ndk开发,C语言入门讲解
- 12-23C语言连续存储实现队列机制
- 12-23Objective-c 数据类型
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 11-18LG新能源宣布与Bear Robotics达成合作,成为
- 11-18机构:三季度全球个人智能音频设备市场强势
- 11-18闲鱼:注册用户过6亿 AI技术已应用于闲置交
- 11-18美柚、宝宝树回应“涉黄短信骚扰”:未发现
- 11-01京东七鲜与前置仓完成融合
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御