文字列の反転の2つの方法


/*名:文字列の反転の2つの方法の説明:ここでは、前後対称文字列の交換を2つの方法で行い、通常の方法は、最初の文字と最後の文字の交換、2番目の文字と最後から2番目の文字の交換です.2つ目の方法は、strがabcdeであり、毎回再帰されて処理されるstrがbcde、cde、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;
}