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

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;
}

猜你喜欢

转载自blog.csdn.net/qq_62775411/article/details/129764812