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