FJNU09排序

来源:互联网 发布:淘宝半身照怎么照 编辑:程序博客网 时间:2024/06/07 00:07

FJNU09排序

Time Limit: 1 Seconds     Memory Limit: 32768 K

Total Submit:443     Accepted:79


Description

给定一个长度不大于1000的字符串,你将对该字符串进行排序,使得所有的'F'后面依次紧跟着所有的'J','N','U','0','9',然后其余的字符按原来的先后顺序紧跟其后.

Input

每组给定一个如上所述的一个字符串,字符串里不包含空格。
读到文件结束。

Output

对于每组测试数据,输出排序后的字符串。

Sample Input

 

c0N9Fo9JmpNeNtUNFi00oJJn000bJJUUe99g0iNNNFFFnUUN!

 

Sample Output

 

FFJJJNNNNU00099competionFFFJJNNNNUUUU000099begin!

 

Hint

while(scanf("%s", s) != EOF) {
...
}


Source

PhoenixWright@fjnu

 

code:

 

#include <stdio.h>
#include <conio.h>
#include <string.h>

int quan[6]={0};

//Òƶ¯×Ö·û´®
void MoveStr(int start,int end, char* str)
{
char mid = str[end];

for (int i=end; i>start; i--)
{
   str[i] = str[i-1];
}

str[i] = mid;
}

//Ñ°ÕÒ¿ªÊ¼Òƶ¯µÄλÖÃ
int StrPostion(int index)
{
int size = 0;
for (int i=0;i<=index;i++)
{
   size += quan[i];
}
return size;
}

// ÅÅÐò
void Sort(char* str)
{
int start = 0;
int lenth = strlen(str);
for (int i=1; i<lenth; i++)
{
   switch(str[i])
   {
   case 'F': start = StrPostion(0); MoveStr(start,i,str); quan[0]++; break;
   case 'J': start = StrPostion(1); MoveStr(start,i,str); quan[1]++; break;
   case 'N': start = StrPostion(2); MoveStr(start,i,str); quan[2]++; break;
   case 'U': start = StrPostion(3); MoveStr(start,i,str); quan[3]++; break;
   case '0': start = StrPostion(4); MoveStr(start,i,str); quan[4]++; break;
   case '9': start = StrPostion(5); MoveStr(start,i,str); quan[5]++; break;
   default:break;
   }
}
}

int main()
{
char str[1000];

while (scanf("%s", str) != EOF)
{
   printf("before sort : %s/n",str);
   Sort(str);
   printf("after sort : %s/n", str);
}

getch();
return 0;
}