字符串反转的两种方法

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

*/

#include
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:"<//将返回的结果和本次迭代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<int main()
{
    //test
    ReverStr ex("abcdefgsd");
    ex.ReverseStr1();
    ex.showRes();

    cout<"abcde")<return 0;
}

你可能感兴趣的:(编程学习(C++))