星星(简单的签到题)

ZJUTOJ-星星

题目

题目地址-点此跳转

小希来到依图面试啦,看到公司的宣传板子上写着:

“依图科技从事人工智能创新性研究,致力于将先进的人工智能技术与行业应用相结合,建设更加安全、健康、便利的世界。

依图带着国际视野组建世界一流的研发团队。我们不是为了把大公司或实验室的技术拿来快速套利,我们参与人工智能领域的基础性科学研究,致力于全面解决机器看、听、理解的根本问题,相信能在计算机视觉、自然语言理解、知识推理、智能硬件、机器人等技术领域作出突破性贡献。

依图的技术已经服务于安防、金融、交通、医疗等多个行业。

我们好奇智慧的奥秘,拓展智能的边界,期待与你一起构建智能的未来。”

小希的心情很是激动,快活地坐在了面试室的外面,想着未来可能就在依图工作,有着无限的未来和希望。

面试洽谈中,面试官开玩笑一般地问小希,你能不能出一个水题,来作为20182018年浙江工业大学迎新赛决赛的签到题呢?

小希简单想了想,脱口而出:

给定一个存在∗(称为星星)的小写字母串,∗可以用任意小写字符串或空串代替,给定一个含有∗的串,问字典序最小的,能由原串生成的长度为MM的串是什么样的。

注意:一个串中可以有多个星星,多个星星可以出现在一起。

如果构造不出这样的串,则输出:”∗yitu∗”(不含引号)

好了,现在这道题就在你的面前等着你。
……

解答

先将串去除∗拼接起来,同时记录第一次∗位置。
如果拼接的串长度大于要求,那无法完成,输出∗yitu∗。
等于的话,输出拼接串,此时∗的位置都是空串。
小于的话,因为要求字典序最小,在第一个位置加上待补足长度的‘a’串即可。

#include<cstdio>
#include<cmath>
#include<bits/stdc++.h>
#include<iostream>

using namespace std;
typedef long long ll;

int n,m,a,b;
string str;
int main() 
{
	cin>>n;
	while(n--)
	{
		cin>>a>>b;
		cin>>str;
			
		int pos=-1;
		string temp="";
		for(int i=0;i<str.length();i++)
		{
			if(str[i]=='*'&&pos==-1)
			pos=temp.length();
			else if(str[i]!='*')
			temp+=str[i];
		}
		
		if(temp.length()<=b)
		{
			temp=temp.substr(0,pos)+string(b-temp.length(),'a')+temp.substr(pos);
			cout<<temp<<endl;
		}else if(temp.length()>b)
		cout<<"*yitu*\n";
		
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值