GYM 101102 F.Exchange(水~)
2017-03-16 16:24
357 查看
Description
给出一个字符串,可以把这个字符串中两种字符X和Y互换,即所有X字符变成Y字符,所有Y字符变成X字符,求所有互换中字典序最小的串
Input
第一行一整数T表示用例组数,每组用例输入一个串长不超过1e5的全由小写字母组成的串
Output
输出经过互换后字典序最小的串
Sample Input
3
hamza
racecar
mca
Sample Output
ahmzh
arcecra
acm
Solution
以a[i]记录第i个字符是否可以用来交换,以b[i]记录第i个字符是否在之前已经出现过,对于第i个字符,如果b[i]=1说明之前已经出现过这个字符,之前就没换现在肯定也不会换,如果b[i]=0说明这个字符可能可以换,那么就找最小的j满足a[j]=1表示第i个字符能够用来交换,那么交换s[i]和j+’a’即可
Code
给出一个字符串,可以把这个字符串中两种字符X和Y互换,即所有X字符变成Y字符,所有Y字符变成X字符,求所有互换中字典序最小的串
Input
第一行一整数T表示用例组数,每组用例输入一个串长不超过1e5的全由小写字母组成的串
Output
输出经过互换后字典序最小的串
Sample Input
3
hamza
racecar
mca
Sample Output
ahmzh
arcecra
acm
Solution
以a[i]记录第i个字符是否可以用来交换,以b[i]记录第i个字符是否在之前已经出现过,对于第i个字符,如果b[i]=1说明之前已经出现过这个字符,之前就没换现在肯定也不会换,如果b[i]=0说明这个字符可能可以换,那么就找最小的j满足a[j]=1表示第i个字符能够用来交换,那么交换s[i]和j+’a’即可
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; #define INF 0x3f3f3f3f #define maxn 111111 int T,n,a[33],b[33]; char s[maxn]; int main() { scanf("%d",&T); while(T--) { scanf("%s",s); n=strlen(s); memset(a,-1,sizeof(a)); memset(b,0,sizeof(b)); for(int i=0;i<n;i++)a[s[i]-'a']=1; for(int i=0;i<n;i++) { if(b[s[i]-'a'])continue; int j=0; while(a[j]==-1)j++; if(j==26)break; if(s[i]==j+'a')a[j]=-1,b[j]=1; else { char x=s[i],y=j+'a'; for(int k=0;k<n;k++) if(s[k]==x)s[k]=y; else if(s[k]==y)s[k]=x; break; } } printf("%s\n",s); } return 0; }
相关文章推荐
- GYM 101102 L.Starry Night(贪心+dfs)
- GYM 101102 A.Coins(01背包)
- GYM 101102 B.The Little Match Girl (贪心)
- GYM 101102 C.Bored Judge(map)
- CodeforcesGym - 101102D. Rectangles 单调栈+dp优化
- GYM 101102 D.Rectangles(单调栈)
- Gym 101102D Rectangles 【单调栈】
- GYM 101102 E.Ya Rajaie and Books (水~)
- Gym - 101102B-------枚举法
- C - Bored Judge Gym - 101102C 模拟
- Gym 101102C---Bored Judge(区间最大值)
- The Little Match Girl Gym - 101102B 【贪心, 上下界规律】
- Gym 101102D 单调栈
- GYM 101102 H.Cinema(水~)
- Codeforces gym 101102 A dp
- Gym - 101102B B. The Little Match Girl 贪心、数论、分步
- Codeforces gym 101102 D 单调栈
- GYM 101102 I.Simple Robot(水~)
- B - The Little Match Girl Gym - 101102B 枚举技巧 火柴棒问题
- Gym 101102D---Rectangles(单调栈)