列表

详情


NC213282. yyds!(永远的神!)

描述

实验室现在非常喜欢念“yyds”这个词来称赞强者。
作为实验室底层的wzc学弟每天要喊的"yyds"的次数实在是太多了,导致嗓子受不了。
机智的wzc造出了一台“yyds自动机”,你只需要向着这个“yyds自动机”输入一个只包含小写英文字符的字符串,他就会把这些字符串重新调整排序后自动吐出一个只包含'y','d','s'的字符串。
这个字符串会按"yydsyydsyyds...."的顺序输出,并忽略其他字符。
当然这三种字符的个数不一定刚好满足2:1:1的比例,剩下的字符仍然按照"yyds"的顺序输出,直到所有的'y','d','s'被输出。

输入描述

只有一行输入,唯一个长度不超过100000的字符串,仅由小写英文字母构成的非空字符串。

输出描述

输出"yyds自动机“输出的结果。(输入数据保证输出数据非空)

示例1

输入:

adfabzasfayydagyyadfssydyyyqeqfgymcvckvjzpymkyc

输出:

yydsyydsyydsyydyyy

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 7ms, 内存消耗: 340K, 提交时间: 2022-03-20 16:27:35

#include<stdio.h> 
#include<string.h> 
int main()
{
char a[100000];
int y,d,s;
gets(a);
for(int i=0;i<strlen(a);i++)
{
if(a[i]=='y') y++;
if(a[i]=='d') d++;
if(a[i]=='s') s++;}
while(y>0||d>0||s>0)
{

if (y>0)
{
printf("y");
y--;}
if (y>0)
{
printf("y");y--;}
if (d>0)
{
printf("d");d--;}
if (s>0)
{
printf("s");s--;}
}
}

Python3 解法, 执行用时: 50ms, 内存消耗: 4648K, 提交时间: 2022-03-20 16:27:16

w=input()
y=w.count('y')
d=w.count('d')
s=w.count('s')
for i in range(y+d+s):
    if y>0:
        print("y",end='')
        y=y-1
    if y>0:
        print("y",end='')
        y=y-1
    if d>0:
        print("d",end='')
        d=d-1
    if s>0:
        print("s",end='')
        s=s-1

C++(g++ 7.5.0) 解法, 执行用时: 3ms, 内存消耗: 444K, 提交时间: 2023-03-14 10:31:29

#include<bits/stdc++.h>
using namespace std;
int main(){
    map<char,int>mp;
    string s,k="yyds";
    cin>>s;
    for(char c:s){
        mp[c]++;
    }
    int t=0;
    while(mp['y']||mp['d']||mp['s']){
        if(mp[k[t%4]])cout<<k[t%4],mp[k[t%4]]--;
        t++;
    }
}

C++(clang++11) 解法, 执行用时: 8ms, 内存消耗: 592K, 提交时间: 2020-10-27 14:18:17

#include<bits/stdc++.h>
using namespace std;
string s,t="yyds";
int cnt[222];
int main()
{
	cin>>s;
	for(int i=0;s[i];i++)
	cnt[s[i]]++;
	while(cnt['y']+cnt['d']+cnt['s'])
	for(int i=0;t[i];i++)
	if(cnt[t[i]])
	{
		cout<<t[i];
		cnt[t[i]]--;
	}
}

上一题