本文主要是介绍把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- #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;
- }
这篇关于把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!