1、首先我们先要明白:什么叫翻转一个字符串?
我举个例子:比如给定一个字符串“love you”,经翻转后就成为了“ouy evol”.
2、接下来怎么解决:(如何进行翻转)
方法一:利用左右指针进行交换实现
1)我们首先定义两个指针:一个指向字符串的首地址*left,一个指向字符串尾部*right
2)让left向后走,让right向前走,在走的过程中,这两个指针指向的内容要进行交换,最终两个指针会相遇,相遇的时候就停止。
我们来看代码具体怎么实现:
#include<stdio.h>
void reverse(char *left,char *right)
{
while(left<=right)
{
int temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char a[] = "love you!";
int *left = a;
int len = sizeof(a)/sizeof(a[0])-1;
int *right = a+len-1;
reverse(left,right);
printf("%s\n",a);
return 0;
}
方法二:利用递归实现
首先我们先来分析下使用递归来实现字符串逆置的思想:
接下来我们来看具体的代码如何实现:
#include<stdio.h>
#include<string.h>
void Reverse_R(char* str)
{
char temp = *str;
int len = strlen(str);
*str = *(str+len-1);
*(str+len-1) = '\0';
if(strlen(str+1)>1)
{
Reverse_R(str+1);
}
*(str+len-1) = temp;
}
int main()
{
char s1[] = "abcde"; //注意此处不要用char* str
Reverse_R(s1);
printf("%s",s1);
return 0;
}