字符串反转的两种方法

/*
名称:字符串反转的两种方法
说明:此处用了两种方法进行前后对称字符串互换,常规的方法是第一个字符和最后
一个字符互换,第二个字符和倒数第二个字符互换; 第二个方法是利用函数递归,
即str为abcde,每次递归使之处理的str为bcde、cde、de、e,然后e、ed、edc、edcb
edcba,达到反转的效果。
虽然这个例子中递归迭代并没有很大的优势,但是这种大而化小,分而治之的思想还
是挺重要的。

*/

#include<iostream>
using namespace std;

class ReverStr
{
public:
    string str;

    ReverStr(string str)
    {
        this->str = str;
    }


    //利用字符反转实现
    string ReverseStr1()
    {
        int i = 0,j = str.size()-1;
        char c;
        while(i < j)
        {
            c = str[i];
            str[i] = str[j];
            str[j] = c;

            ++i;
            --j;

        }

        return str;
    }



    //利用函数递归实现
    string ReverseStr2(string str)
    {
        string rec_str;
        int len;
        if(str.size() == 1)     //如果是最后一个字符,则迭代停止 ,返回
            return str;
        else
        {

            rec_str = ReverseStr2(str.substr(1,str.size()));
            cout<<"rec_str:"<<rec_str<<endl;

            //将返回的结果和本次迭代str的第一个字符反转,即若str为de,返回的是e,反转后为ed
            len = rec_str.size();
            rec_str.resize(len+1);
            rec_str[len] = str[0];

            return rec_str;

        }

    }


    //显示结果
    void showRes()
    {
        cout<<str<<endl;
    }

};

int main()
{
    //test
    ReverStr ex("abcdefgsd");
    ex.ReverseStr1();
    ex.showRes();

    cout<<ex.ReverseStr2("abcde")<<endl;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值