您的位置:首页 > 其它

把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。

2014-07-21 14:54 387 查看


#include <stdio.h>   

#include <string.h>   

//题目以及要求:把一个字符串的大写字母放到字符串的后面,   

//各个字符的相对位置不变,不能申请额外的空间。    

//判断是不是大写字母    

int isUpperAlpha(char c){  

if(c >= 'A' && c <= 'Z'){  

return 1;  

}  

return 0;   

}  

//交换两个字母    

void swap(char *a, char *b){  

char temp = *a;  

*a = *b;  

*b = temp;  

}   

char * mySort(char *arr, int len){  

if(arr == NULL || len <= 0){  

return NULL;  

}  

int i = 0, j = 0, k = 0;  

for(i = 0; i < len; i++){  

for(j = len - 1 - i; j >= 0; j--){  //比较len-1-i次,也就是比较当前位置后面的次数

if(isUpperAlpha(arr[j])){  

for(k = j; k < len - i - 1; k++){  

swap(&arr[k], &arr[k + 1]);  

}  

break;  

}  

//遍历完了字符数组,但是没发现大写字母,所以没必要再遍历下去   

if(j == 0 && !isUpperAlpha(arr[j])){  

//结束;   

                           return arr;  

}  

}  

}  

//over:    

return arr;  

}  

int main(){  

char arr[] = "aaaaaaaaaaaaaaaaaaaaaaaAbcAdeBbDc";  

printf("%s\n", mySort(arr, strlen(arr)));  

return 0;  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐