字符串反转实现的几种方式
来源:互联网 发布:阿里云cdn节点ip 编辑:程序博客网 时间:2024/05/16 05:12
方式一:将字符串反向输出来,不改变内存(递归实现)
void reverse_string(char *str){/*遇到'\0'什么也不做,函数结束*/if(*str == '\0');else{/*输出下一个*/reverse_string(str + 1);cout<<*str;}}方式二:改变内存(交换法)
/*非递归实现:操作内存*/char *reverse_string1(char *str){char *left = str; //存放字符数组的最左边char *right = str; //存放字符数组的最右边while(*right != '\0'){right++;}/*while循环之后,right指向'\0',right--之后,指向最后一个非'\0'字符*/right--;/*左右对称的两个元素交换*/char temp;while(left < right){temp = *left;*left = *right;*right = temp;left++;right--;}return str;}方式三:改变内存(递归实现)
/*递归实现:操作内存*//*递归每调用一次:要反转的字符串头和尾各减少一个*/char *reverse_string2(char *str){int lenth = strlen(str);/*空字符串lenth=0或者lenth=1只有一个有效字符的字符串无需反转*/if(lenth <= 1){return NULL;}char temp; /*当字符串至少存在两个非'\0'字符时才用的到反转*/if(lenth > 1){temp = str[0];str[0] = str[lenth-1];/*最后一个字符在下次递归时不再处理*/str[lenth - 1] = '\0';/*递归每调用一次,要反转的字符串头和尾各减少一个*/reverse_string2(str + 1); str[lenth-1] = temp;//(利用站先入后出的特性)}return str;}测试:
#include<stdio.h>#include<iostream>using namespace std;/*递归实现:操作内存*//*递归每调用一次:要反转的字符串头和尾各减少一个*/char *reverse_string2(char *str){int lenth = strlen(str);/*空字符串lenth=0或者lenth=1只有一个有效字符的字符串无需反转*/if(lenth <= 1){return NULL;}char temp; /*当字符串至少存在两个非'\0'字符时才用的到反转*/if(lenth > 1){temp = str[0];str[0] = str[lenth-1];/*最后一个字符在下次递归时不再处理*/str[lenth - 1] = '\0';/*递归每调用一次,要反转的字符串头和尾各减少一个*/reverse_string2(str + 1); str[lenth-1] = temp;//(利用站先入后出的特性)}return str;}/*非递归实现:操作内存*/char *reverse_string1(char *str){char *left = str; //存放字符数组的最左边char *right = str; //存放字符数组的最右边while(*right != '\0'){right++;}/*while循环之后,right指向'\0',right--之后,指向最后一个非'\0'字符*/right--;/*左右对称的两个元素交换*/char temp;while(left < right){temp = *left;*left = *right;*right = temp;left++;right--;}return str;}void reverse_string(char *str){/*遇到'\0'什么也不做,函数结束*/if(*str == '\0');else{/*输出下一个*/reverse_string(str + 1);cout<<*str;}}int main(){char str1[] = "ABCDEFGH";char str2[] = "ABCDEFGH";char str3[] = "ABCDEFGH";cout<<reverse_string1(str1)<<endl;cout<<reverse_string2(str2)<<endl;reverse_string(str3);cout<<endl;return 0;}
1 0
- 字符串反转实现的几种方式
- 字符串反转的几种方式
- python反转字符串的几种方式
- 字符串实现反转的几种方法
- 总结几种Java字符串反转的实现方法
- 初识Java,初出茅庐:字符串实现反转的几种方法
- python中实现字符串反转的几种方法
- Java实现字符串反转的几种方法
- 字符串的几种常见的反转
- Spring 控制反转的几种方式
- 字符串反转的几种算法
- Python字符串反转的几种方法
- 字符串反转的几种方法
- 字符串反转的几种简单方法
- 字符串反转的几种方法
- 字符串反转的7种方式
- java字符串反转的7种方式
- 字符串反转的两种方式
- 安卓实习期间整理知识点(十三)
- date0405/EhanshiLanhanshi.java
- date0405/SingleDemo.java
- Linux下的管道编程
- OC--面向对向的三大特性(二)
- 字符串反转实现的几种方式
- JAVA学习第7天(2)java当中的异常2
- How to upload your project to GitHub
- oracle修改列的类型
- date0405/SingleTest.java
- 3.5 Mediator(中介者) -- 对象行为型模式
- leetcode-Search Insert Position
- maven常用插件
- date0405/StaticCodeDemo.java