反轉字符串
s = "123456"
打印出654321
這裏面有2種想法:
- 改變字符串s = “654321”,直接打印
- 逆序打印字符串,不改變字符串
這裏我都簡單實現了一下:
void reverse_c(char* str) //c語言實現
{
if (*str == '\0')
return;
reverse_c(str+1);
putchar(*str);
}
void reverse_cpp(const string& s) //c++實現
{
int size = s.size();
if (size == 0)
return;
else if (size == 1)
cout << s[0];
else
{
reverse_cpp(s.substr(1));
cout << s[0];
}
}
下面是改變字符串
void change_str(char* str) //循環
{
int left = 0;
int right = strlen(str) - 1;
while (left < right)
{
swap(str[left++], str[right--]);
}
}
void change_str_r(char* str) //遞歸
{
int size = strlen(str);
if (size == 0)
return;
else if (size == 1)
return;
else
{
char tmp = str[0];
str[0] = str[size-1];
str[size-1] = '\0';
change_str_r(str+1);
str[size-1] = tmp;
}
}