算法基础-字符移位

[编程题] 算法基础-字符移位
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?
输入描述:

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.



输出描述:

对于每组数据,输出移位后的字符串。


输入例子:
AkleBiCeilD

输出例子:
kleieilABCD

#include<stdio.h>
#include<string.h>
#pragma warning(disable:4996)

void swap(char *a, char *b)
{
    char c;
    c = *a;
    *a = *b;
    *b = c;
}
void test(char *str)
{
    
    int num = 0;
    int lens = 0;
    lens = strlen(str);
    for (int i = 0; i < lens; i++)
    {
        if (str[i]>='A' && str[i] <= 'Z')
            num++;
    }
    
    
    for (int j = 0; j < num; j++)
    {
        for (int i = 0; i < lens - 1; i++)
        {
            if (str[i] >= 'A' && str[i] <= 'Z'&&str[i+1] >= 'a' && str[i+1] <= 'z')
            {
                swap(&str[i], &str[i + 1]);
            }
        }
    }
    
    //printf("%d%d
",num,lens);
    printf("%s", str);
}



int main()
{
    char str[1000];


    while (scanf("%s",str) != EOF)
    {
        test(str);

    }

    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/pingandezhufu/p/5820788.html