文字列の反転の2つの方法
3175 ワード
/*名:文字列の反転の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;
}