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;
}