字符串的反转五种方法
2013-09-16 20:17
162 查看
#include<iostream> #include<string> using namespace std; char *reverse1( char *str, int len) { if(len<=1) //边界条件 return str; char temp = *str; *str = *(str+len-1); *(str+len-1) = temp; return (reverse1( str+1, len-2)-1); } char *reverse2( const char *str) { char *temp = new char[strlen(str)+1]; strcpy(temp, str); //会复制\0 int len = strlen(str); for( int i=0; i<len/2; i++) { char ch = temp[i]; temp[i] = temp[len-i-1]; temp[len-i-1] = ch; } // temp[len] = '\0'; return temp; } char *reverse3( const char *str) { char *temp = new char[strlen(str)+1]; strcpy(temp, str); int len = strlen(str); char *head = temp; char *rear = temp+len-1; while(head<rear) { char ch = *head; *head = *rear; *rear = ch; ++head; --rear; } // temp[len] = '\0'; return temp; } char *reverse4( const char *str) { char *temp = new char[strlen(str)+1]; strcpy(temp, str); int len = strlen(str); char *head = temp; char *rear = temp+len-1; while(head<rear) { *head = *head+*rear; *rear = *head-*rear; *head = *head-*rear; ++head; --rear; } return temp; } char *reverse5( const char *str) { char *temp = new char[strlen(str)+1]; strcpy(temp, str); int len = strlen(str); char *head = temp; char *rear = temp+len-1; while(head<rear) { *head^=*rear; *rear^=*head; *head^=*rear; ++head; --rear; } return temp; } int main() { char str[7] = "123456"; cout<<reverse2(str)<<endl; cout<<reverse3(str)<<endl; cout<<reverse4(str)<<endl; cout<<reverse5(str)<<endl; cout<<reverse1(str, 6)<<endl; return 0; }
相关文章推荐
- Java中反转字符串我所知的五种方法
- Java中判断字符串是否为数字的五种方法
- 在asp.NET中字符串替换的五种方法第1/2页
- Java中判断字符串是否为数字的五种方法
- Java中判断字符串是否为数字的五种方法
- 7 种将字符串反转的 Java 方法
- 实现字符串反转的四种方法(C#)
- javascript 实现字符串反转的方法
- Java中判断字符串是否为数字的五种方法
- Python字符串逐字符或逐词反转方法
- 几种字符串反转方法效率比较
- 用C语言实现字符串反转函数strrev的经典方法
- 7 种将字符串反转的 Java 方法
- 自己写的字符串反转方法和StringBuffer的字符串反转
- Java中判断字符串是否为数字的五种方法
- Javascript 去掉字符串前后空格的五种方法
- c++ 字符串反转方法 UNICODE 和 ANSI 版本
- Python字符串逐字符或逐词反转方法
- Python中字符串反转的方法: