1.1一天一題:逆轉字符串

輸入一個字符串,將其逆轉並輸出。eg:s=「abcd」,逆序後變成s=「dcba」。數組

1.原地逆序ide

  原地逆序不容許額外分配空間,就是將字符串兩邊的字符逐個交換。spa

(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 之間進行逆序。code

 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

2.普通逆序blog

  直接分配一個與原字符串等長的字符數組,而後反向拷貝。遞歸

3.按單詞逆序字符串

  給定一個字符串,按單詞將其逆序。eg:「This is a student」,輸出是 「student a is This」。分兩步,第一步,先按單詞逆序,獲得「sihT si a tneduts」,第二步將整個句子逆序,「student a is This」。string

  對於第一步,關鍵是如何肯定單詞,這裏以空格爲分界。io

 1 void reverse_str(char *p,char *q)
 2 {
 3     while(p<q)
 4     {
 5         char t=*p;
 6         *p++=*q;
 7         *q--=t;
 8     }
 9     
10 }
11 char *reverse_sen(char *sen)
12 {
13     char *p=sen;
14     char *q=sen;
15     while(*p!='\0')
16     {
17         if(*p==' ')
18         {
19             reverse_str(q,p-1);
20             p++;
21             q=p;
22         }
23         else
24             p++;
25     }
26     reverse_str(q,p-1);
27     reverse_str(sen,p-1);
28     return sen;
29 }
30 int main()
31 {
32     char str[]="This is a student";    
33 //    char string[128];
34 //    scanf("%s",string);
35     printf("now: %s\n",reverse_sen(str));
36     return 0;
37 }

4.逆序打印

  用遞歸的方式完成遞歸打印

1 void reverse_print(char *str)
2 {
3     if(*(str+1)!='\0')
4         reverse_print(str+1);
5     printf("%c",*str);
6 }
相關文章
相關標籤/搜索