输入一个字符串,将其逆转并输出。eg:s=“abcd”,逆序后变成s=“dcba”。

1.原地逆序

  原地逆序不允许额外分配空间,就是将字符串两边的字符逐个交换。

(1)设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动,直到交叉。(这个方法最普遍)  

 1 #include <stdio.h>
 2 
 3 char * reverse_str(char *str)
 4 {
 5     char *p,*q;
 6     p=str;
 7     q=str;
 8     while(*q)
 9         q++;
10     q--;
11     while(p<=q)
12     {
13         char a=*p;
14         *p++=*q;
15         *q--=a;
16     
17     }
18     return str;
19 }
20 
21 int main()
22 {
23 //  char string[]="abcdefg";
24     char string[128]; 
25     scanf("%s",string);
26     printf("now: %s\n",reverse_str(string));
27     return 0;
28 }

(2)递归,调用方法 reverse_str(str,0,strlen(str)-1),对字符串 str 在区间 left 和 right 之间进行逆序。

 1 char *reverse_str(char *str,int left,int right)
 2 {
 3 
 4     if(left>=right)
 5         return str;
 6 
 7     char t=str[left];
 8     str[left]=str[right];
 9     str[right]=t;
10     return reverse_str(str,left+1,right-1);
11     
12 }
View Code

相关文章:

  • 2021-09-06
  • 2022-12-23
  • 2021-09-09
  • 2021-09-22
  • 2021-07-05
  • 2021-05-30
  • 2021-08-05
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-05-02
  • 2022-12-23
  • 2022-12-23
  • 2022-02-07
相关资源
相似解决方案