1 #include <stdio.h>
2 #include <string.h>
3
4 //大致思路是从最后一个字符开始判断是不是大写字母,如果是就和后面的i个小写字母冒泡交换,如果不是大写字母就令小写字母的数目i++
5 //判断是不是大写字母
6 int isUpperAlpha(char c)
7 {
8 if(c >= 'A' && c <= 'Z')
9 {
10 return 1;
11 }
12 return 0;
13 }
14
15 //交换两个字母
16 void swap(char *a, char *b)
17 {
18 char temp = *a;
19 *a = *b;
20 *b = temp;
21 }
22
23 char * mySort(char *arr, int len)
24 {
25 if(arr == NULL || len <= 0)
26 {
27 return NULL;
28 }
29
30 int i = 0, j = 0, k = 0, m = 0;
31 for(j = len-1; j >=0; j--)
32 {
33 if(isUpperAlpha(arr[j]))
34 {
35 m=j;k=i; //i为小写字母的数目
36 while(k--)
37 {
38 swap(&arr[m++], &arr[m]);
39 }
40 }
41 else i++;
42 }
43 return arr;
44 }
45
46 int main()
47 {
48 char arr[] = "GaaaaBGaaaAbcAdeBbDAcSSs";
49 printf("%s\n", mySort(arr, strlen(arr)));
50 return 0;
51 }