多种方法实现字符串逆序

/*
    编写函数,实现字符串逆序 
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char * func1(char * str)    //普通逆序
{
    char * temp = str;

    while(*str++);
    char * result = (char *)malloc((str - temp + 1)*sizeof(char));
    temp = result;

    str -= 2;

    while(*(temp-1))
    {
        *temp++ = *str--;
    }
    *temp = '\0';

    return result;
} 

char * func2(char * str)    //异或逆序 
{
    char * result = str;
    char * temp = str;

    while(*(temp+1))
    {
        temp++;
    }


    while(temp > result)
    {
        *temp = *temp ^ *str;   
        *str = *str ^ *temp;
        *temp-- ^= *str++;  
    }

    return result;
}

char* Reverse(char* s)  //异或逆序 
{
    char * r = s ;

    //令p指向字符串最后一个字符
    char* p = s;
    while (*(p + 1) != '\0')
    {
        ++p;
    }    

    // 使用异或操作进行交换
    while (p > s)
    {
        *p ^= *s;
        *s ^= *p;
     //   *(p--) ^= *(s++);
        *p-- = *p ^ *s++;
    }

    return r ;
}

// 对字符串s在区间left和right之间进行逆序,递归法
void Reverse_2( char* s, int left, int right )
{
    if(left >= right)
        return;

    char t = s[left] ;
    s[left] = s[right] ;
    s[right] = t ;

    Reverse_2(s, left + 1, right - 1) ;
}

int main(void)
{
    char str[] = "qwerq1234567890!";
    char *result;

    puts(str);

    result = Reverse(str);
    puts(result);

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值