CF1076A Minimizing the String

去除字符求字典序最小串
本文介绍了一种算法,用于处理给定长度的字符串,通过移除一个或零个字符来找到字典序最小的可能串。该算法首先从前向后查找,一旦发现当前字符小于前一个字符,就移除前一个字符;如果未找到,则移除最后一个字符。代码使用C++实现,详细展示了如何遍历字符串并输出调整后的结果。

题目大意:

    输入一个长度为n的字符串,去掉一或零个字符,输出去掉后字典序最小的串。(2≤n≤2⋅105)

思路:

  从前往后找到第一个比前一个字符小的字符,去掉前一个;若找不到去掉最后一个就好。

 1 #include<cstdio>
 2 #include<string>
 3 #include<iostream>
 4 
 5 using namespace std;
 6 
 7 int n;
 8 string ss,ans;
 9 
10 int main()
11 {
12     scanf("%d",&n);
13     cin>>ss;
14     int len=ss.length(),ans=len-1;
15     for(int i=1;i<len;i++)
16     {
17         if(ss[i]<ss[i-1])
18         {
19             ans=i-1;
20             break;
21         }
22     }
23     for(int i=0;i<ans;i++)
24     {
25         cout<<ss[i];
26     }
27     for(int i=ans+1;i<len;i++)
28     {
29         cout<<ss[i];
30     }
31     cout<<endl;
32     return 0;
33 }

 

//第一次cf,记录一下。

 

转载于:https://www.cnblogs.com/LiqgNonqfu/p/9966921.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值