编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
#if 0
#include<iostream>
#include<string>
#include<vector>
using namespace std;
// 非递归法实现字符串逆序
char* reverse1(char *str)
{
if (!str)
{
return NULL;
}
char c;
int len = strlen(str);
for (int i = 0; i < len / 2; i++)
{
c = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = c;
}
return str;
}
// 递归法实现字符串逆序
char *reverse2(char *str)
{
if (!str)
{
return NULL;
}
char c;
int len = strlen(str);
if (len>1)
{
c = str[0];
str[0] = str[len - 1];
str[len - 1] = '\0';
reverse2(str+1);
str[len - 1] = c;
}
return str;
}
string reverse(string &s)
{
if (!s.empty())
{
char c = s[0];
s.erase(0,1);
reverse(s);
s+= c;
}
return s;
}
int main(void)
{
// char str[] = "ABCEF";
// int len = strlen(str);
// cout << len <<endl;
// char *str = "ABC";
// char *t;
string str = "ABCDE";
string t;
t=reverse(str);
cout << t << endl;
}
#endif
#if 0
#include<iostream>
#include<string>
#include<vector>
using namespace std;
// 非递归法实现字符串逆序
char* reverse1(char *str)
{
if (!str)
{
return NULL;
}
char c;
int len = strlen(str);
for (int i = 0; i < len / 2; i++)
{
c = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = c;
}
return str;
}
// 递归法实现字符串逆序
char *reverse2(char *str)
{
if (!str)
{
return NULL;
}
char c;
int len = strlen(str);
if (len>1)
{
c = str[0];
str[0] = str[len - 1];
str[len - 1] = '\0';
reverse2(str+1);
str[len - 1] = c;
}
return str;
}
string reverse(string &s)
{
if (!s.empty())
{
char c = s[0];
s.erase(0,1);
reverse(s);
s+= c;
}
return s;
}
int main(void)
{
// char str[] = "ABCEF";
// int len = strlen(str);
// cout << len <<endl;
// char *str = "ABC";
// char *t;
string str = "ABCDE";
string t;
t=reverse(str);
cout << t << endl;
}
#endif