C++反转字符串
来源:互联网 发布:php微信token验证失败 编辑:程序博客网 时间:2024/04/30 10:29
//通过不同的方法,实现对所输入字符串的反转,可以很好地复习巩固 C++ 基础知识
/*分析过程:
假设要使传递的字符串为常量const字符串,这样操作更加灵活,可直接传递字符串字面值进行反转,常见的解决方法就是,定义一个新的与传递过来字符串长度
相等的字符数组,然后进行字符串拷贝,把str字符按从左到右放置到字符数组中,然后采用循环来对字符数组中字符反转
*/
/*第一种,采用以上思路解法,传递为const类型C风格字符指针,返回为char*类型*/
//直接使用字符数组赋值
char* strrev1(const char*str)
{
const size_t length = strlen(str);//求字符长度
char *temp = new char[length];//新建一个等长度的字符数组
strcpy(temp,str);//字符串拷贝
for (size_ti = 0; i <= length/2; ++i)//对字符数组中的字符反转,循环执行条件为标识小于或等于字符长度一半
{
char c = temp[i];
temp[i] = temp[length -i -1];
temp[length -i -1] = c;
}
return temp;//返回反转后的字符
}
//采用指针操作方式
char* strrev2(const char*str)
{
char* tmp = new char[strlen(str)];
strcpy(tmp,str);
char* ret = tmp;//用来最后返回数组指针
char* p = tmp + strlen(str) - 1;
while (p >tmp)
{
char t = *tmp;
*tmp++ = *p;
*p-- = t;
}
return ret;
}
//与上一函数基本相似,只不过本函数使用是移位操作改变字符指针指向
char* strrev3(const char*str)
{
char* tmp = new char[strlen(str) + 1];
strcpy(tmp,str);
char* ret = tmp;
char* p = tmp + strlen(str) - 1;
while (p >tmp)
{
*p ^= *tmp;
*tmp++ ^= *p;
*p-- ^= *tmp;
}
return ret;
}
//节省几步,直接给新建的字符数组赋反转的值,呵呵,简单明了,只不过循环多执行几次
char* strrev4(const char*str)
{
char * temp = new char[strlen(str)];
for(inti = 0; i <= strlen(str); i++)
{
temp[i] = str[strlen(str) -i -1];
}
return temp;
}
//使用递归进行字符反转,网上看的,不过感觉不好,限制太多
//(不能直接反转常量字符串,因为没有定义新的字符数组,而是在原数组上直接进行字符反转,节省空间,提高效率,还要传递字符长度,增加限制,但总归是个思路)
char* strrev5 (char* str,intlen)
{
if (len <= 1)
returnstr;
char t = *str;
*str = *(str +len -1);
*(str +len -1) = t;
return (strrev5(str + 1,len - 2) - 1);
}
/*如果传递是std::string类型字符串且是const的!!
返回类型为std::string
*/
std::string strrev6(const std::string str)
{
string r;//定义一个新的字符串变量,用来接收
stringr;
- 字符串反转(C/C++)
- 反转字符串----(c#)
- C字符串反转算法
- (C#)字符串反转
- C语言字符串反转
- 字符串反转reverse.c
- C 字符串反转
- 字符串反转(C语言)
- C语言字符串反转
- C语言字符串反转
- C字符串操作:字符串反转
- C语言字符串反转函数
- C语言程序设计字符串内容反转
- C语言字符串反转函数
- C语言字符串反转函数
- C语言字符串反转函数
- C语言字符串反转函数
- 字符串反转函数,C 语言。
- 用CMD命令打开计算机管理
- 分辨率landroid
- [转] 亚洲销售女神徐鹤宁经典语录——太过精辟,不学必悔
- linux C++中hello world
- Java方法的可变参数类型
- C++反转字符串
- Oracle数据库用户
- linux中o,a,so文件详解
- python环境搭建和开发工具的配置
- Love or Money?---Chapter 5
- 数据结构 时间复杂度
- sql where 1=1和 0=1 的作用
- Java垃圾回收机制浅析
- linux应用程序设计基础--进程控制编程