【蓝桥杯】删除字符 附erase()函数的用法

文章介绍了C++中string对象的erase()函数如何删除字符串中的字符,提供了三种不同的使用示例。此外,还讨论了一个编程问题,即如何删除单词中的某些字符以得到字典序最小的单词,解决方案是删除前面字符大于后面字符的元素。
摘要由CSDN通过智能技术生成

erase()函数的用法

str.erase(str.begin() + 3);//删除str.begin()开始元素的后面的第三位;
str.erase(str.begin(),str.end());//删除str的开始元素至结束元素
str.erase(0,6);//删除从第0位开始,长度为6的字符串;

#include<iostream>
using namespace std;
int main()
{
	string str1 = "change situation";
	string str2 = "change situation";
	string str3 = "change situation";
	
	str1.erase(str1.begin() + 3);//删除str1.begin()开始元素的后面的第三位,即n; 
	str2.erase(str2.begin(),str2.end());//删除str2的开始元素至结束元素 ;
	str3.erase(0,6);//删除从第0位开始,长度为6的字符串,即剩下的包含空格 situation; 
	
	cout << "字符串1为:" << str1 << endl;
	cout << "字符串2为:" << str2 << endl;
	cout << "字符串3为:" << str3 << endl;
	return 0;
 } 

在这里插入图片描述

删除字符

题目描述:

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

输入输出样例:

输入:

LANQTAO
3

输出:

AIAO

思路:

删除t个字符使得字符的字典序最小。 把前面字符比后面字符大的字符删掉,如果我们把这个机会让给别的字符,由于靠前面的有更大的字符,字符串又是相同长度的,这样字符串的字典序会增加,所以把前面字符比后面字符大的删掉,整体的字符串的字典序就是最小的。

代码实现:

#include <iostream>
#include<string>
using namespace std;
int main()
{
  // 请在此输入您的代码
  string str;
  int t;
  cin >> str >> t;
  while(t--){
    for(int i = 0;i < str.length();i++)
    {
      if(str[i] > str[i+1]){
        str.erase(i,1);//删除第i个字符
        break;
      }
    }
  }
  cout << str <<endl;
  return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柴妮贝贝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值