反转字符串

反转字符串

s = "123456"
打印出654321

这里面有2种想法:

  1. 改变字符串s = “654321”,直接打印
  2. 逆序打印字符串,不改变字符串

这里我都简单实现了一下:

void reverse_c(char* str) //c语言实现
{
    if (*str == '\0')
        return;
    reverse_c(str+1);
    putchar(*str);
}

void reverse_cpp(const string& s) //c++实现
{
    int size = s.size();
    if (size == 0)
        return;
    else if (size == 1)
        cout << s[0];
    else
    {
        reverse_cpp(s.substr(1));
        cout << s[0];
    }
}
下面是改变字符串

void change_str(char* str) //循环
{
    int left = 0;
    int right = strlen(str) - 1;
    while (left < right)
    {
        swap(str[left++], str[right--]);
    }
}

void change_str_r(char* str) //递归
{
    int size = strlen(str);
    if (size == 0)
        return;
    else if (size == 1)
        return;
    else
    {
        char tmp = str[0];
        str[0] = str[size-1];
        str[size-1] = '\0';
        change_str_r(str+1);
        str[size-1] = tmp;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值