fjnu 1902 排排序

本文介绍了一种用于处理字符串中特定ASCII码范围内的字符排序算法。该算法能够有效地将指定范围内的字符提取出来,并按ASCII码顺序进行排序,再将排序后的字符放回原位置,保持其他字符不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Source:

#include
<iostream>
using namespace std;

char s[30001];
char a,b;
int L;
struct Node
{
    
char c;
    
int n;
}
;

Node c[
30001];
int m;

void init()
{
    
int i,k=1;
    
for(i=0;i<L;i++)
    
{
        
if((a<=b&&s[i]>=a&&s[i]<=b) || (a>b&&s[i]>=b&&s[i]<=a))
        
{
            c[k].c
=s[i];
            c[k].n
=i;
            k
++;
            m
++;
        }

    }

}


void sort()
{
    
int i,j;
    
for(i=1;i<=m;i++)
        
for(j=1;j<=m;j++)
        
{
            
if(c[i].c<c[j].c)
            
{
                
char t;
                t
=c[i].c;
                c[i].c
=c[j].c;
                c[j].c
=t;
            }

        }

}


void input()
{
    
int i;
    
for(i=1;i<=m;i++)
    
{
        s[c[i].n]
=c[i].c;
    }

}


int main()
{
//    freopen("fjnu_1902.in","r",stdin);
    gets(s);
    scanf(
"%c %c",&a,&b);
    L
=strlen(s);
    init();
    sort();
    input();
    cout
<<s<<endl;
}

Description

给定一个字符串str,和两个字符a,b,将str中ASCII码处于a,b之间(含a b)的字符按ASCII码从小到大排序,其他字符位置不变.输出排序的字符串

Input

输入只有两行
第一行给出一个字符串str
第二行给出两个字符a,b,以一个空格间隔.

字符串长度小于30000

Output

输出只有一行,给出排序后的字符串

Sample Input

FJNU contest 1062 for xi'an 2006 . 
0 9

 

Sample Output

FJNU contest 0001 for xi'an 2266 . 

 

Hint

原字符串 FJNU contest 1062 for xi'an 2006 . 中处于'0'与'9'之间的字符有
1062 2006
1 0 6 2 2 0 0 6
将之排序后为 0 0 0 1 2 2 6 6
0001 2266
其余字符不变,于是新字符串为
FJNU contest 0001 for xi'an 2266 .

KEY:把a,b之间的全部取出来放到结构体里面,进行排序;

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值