删除字符

题目描述
给定一个单词,请问在单词中删除 tt 个字母后,能得到的字典序最小的单词是什么?

输入描述
输入的第一行包含一个单词,由大写英文字母组成。

第二行包含一个正整数 tt。

其中,单词长度不超过 100100,tt 小于单词长度。

输出描述
输出一个单词,表示答案。

简单的一道字符模拟,一直没看懂样例,看懂之后大意就是删除n个数之后的最小的字典序单词,我们可以把它理解成他所有前面的数字都是在删除了N个数字之后最小的,只要还能删除数字并且当前字母的后面还有比他小的,那么我们就可以将他删除,因为有比他还小的我们完全可以把它删除了让比他更小的字母留着,这样整个单词都会比较小。

#include<bits/stdc++.h>
using namespace std;
char a[105];
bool b[105];
int n;
int main(){
	cin>>a;
	cin>>n;
	int len=strlen(a); //总长度
	int rm=0; //移除的数字
	for(int i=0;i<len;i++){
		for(int j=i;j<len;j++){
			if(a[i]>a[j]){ //如果当前字母之后还有比他更小的我们就将他删除
			b[i]=true;rm++;break;	 //将当前字符标记为删除,并且rm加1,然后跳出循环别继续搜下去了
			}
		}
		if(rm==n)break; //如果删够了那么我们就不删了
	}
	for(int i=0;i<len;i++){
		if(!b[i])cout<<a[i]; //如果当前单词没被标记我们就输出它
	}
	return 0;
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这咋又bug了嘛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值