设为首页 加入收藏

TOP

字符串的反转五种方法
2013-09-26 19:51:01 来源: 作者: 【 】 浏览:96
Tags:字符串 反转 方法
    关于字符串的反转五种方法我们直接上代码:
    #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 = "123456";
    cout《reverse2(str)《endl;
    cout《reverse3(str)《endl;
    cout《reverse4(str)《endl;
    cout《reverse5(str)《endl;
    cout《reverse1(str, 6)《endl;
    return 0;
    }
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇树形DP解决树上的最小点覆盖 下一篇C++中全局对象的初始化顺序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: