编写字符串反转函数strrev
来源:互联网 发布:只差一个程序员了 编辑:程序博客网 时间:2024/06/08 14:59
问题
编写字符串反转函数:strrev。要求时间和空间效率都尽量高。测试用例:输入“abcd”,输出应为“dcba”;
解法1 遍历字符串,一头一尾交换
代码
char * strrev1(const char* str){ int len = strlen(str); char* tmp = new char[len+1]; strcpy(tmp,str); for(int i = 0;i<len/2;i++) { char c = tmp[i]; tmp[i] = tmp[len-i-1]; tmp[len-i-1] = c; } return tmp;}
解法2 指针操作交换
代码
char *strrev2(const char *str){ char *temp = new char[strlen(str)+1]; strcpy(temp,str); char * ret = temp; char * p = temp+strlen(str)-1; while(p>temp) { char t = *temp; *temp = *p; *p = t; --p; ++temp; } return ret;}
解法3 异或交换
代码
char *strrev3(const char * str){ char * temp = new char[strlen(str)+1]; strcpy(temp,str); char *ret=temp; char *p = temp+strlen(str)-1; while(p>temp) { *p^=*temp; *temp^=*p; *p^=*temp; --p; ++temp; } return ret;}
解法4 加减法交换
代码
char *strrev4(const char * str){ char * temp = new char[strlen(str)+1]; strcpy(temp,str); char *ret=temp; char *p = temp+strlen(str)-1; while(p>temp) { *p =*p + *temp; *temp=*p - *temp; *p =*p - *temp; --p; ++temp; } return ret;}
解法5 递归交换
代码
char *reverse5(char* str,int len){ if(len<= 1) return str; char t = *str; *str = *(str+len-1); *(str+len-1) = t; return (reverse5(str+1,len-2)-1);}
阅读全文
0 0
- 编写字符串反转函数strrev
- strrev。。反转字符串函数
- PHP反转字符串函数strrev()函数的用法
- php函数strrev()反转中文字符串乱码的问题
- for循环的使用 反转字符串,手写strrev()函数 解决问题
- 编写字符串反转函数
- 编写字符串反转函数 .
- 字符串函数strrev
- 字符串函数strrev
- 迅雷笔试 字符串反转 C库函数 strrev
- 用C语言实现字符串反转函数strrev的经典方法
- 用C语言实现字符串反转函数strrev的经典方法
- 用Java编写函数反转字符串
- strrev函数
- strrev函数
- strrev函数
- strrev函数
- 编写字符串反转函数的5种方法
- 我对于游戏框架的理解——框架,消息机制
- HTML&CSS精选笔记_CSS入门
- 无序数组排序后的最大相邻差值求解
- spring mvc 引入swagger2.4后,junit测试异常
- 面向对象——匿名内部类
- 编写字符串反转函数strrev
- SpringIOC容器的生命周期
- Navicat导出sql结构脚本并导入powerdesion(带描述Comment)
- spring mvc入门
- 【Objective-C】哈希算法(MD5)工具类
- 【剑指Offer】面试题37:两个链表的第一个公共结点
- 第二章 头文件、变量和基本类型(4)——转义序列
- OverFeat
- 一些前端开发中最常用的JS代码片段