正经题解|找到acgo
2024-09-19 13:59:02
发布于:浙江
27阅读
0回复
0点赞
找到acgo
题目分析
问能否在给定的字符串中找到子序列 acgo
,按单个字符去匹配,比如如果找到了 a
那么接着应该找 c
,由于是子序列不用管是是否连续,忽略无关字符。
在 C++
中,std::string
类提供了几种 erase
方法,用于删除字符串中的字符或子字符串。以下是几种常见的用法:
erase方法
1. 删除指定位置的字符
可以通过指定字符的位置来删除单个字符。
std::string str = "Hello, World!";
str.erase(5); // 删除索引为 5 的字符,即删除逗号 ',' 后的字符串变为 "Hello World!"
2. 删除指定范围的字符
你可以通过指定起始位置和要删除的字符数量来删除多个字符。
std::string str = "Hello, World!";
str.erase(5, 2); // 从索引 5 开始删除 2 个字符,删除结果为 "Hello World!"
3. 删除范围内的字符(使用迭代器)
可以通过迭代器指定删除范围,通常用于删除字符串中的子字符串或部分字符。
std::string str = "Hello, World!";
str.erase(str.begin() + 5, str.begin() + 7); // 使用迭代器删除索引 5 和 6 的字符,即删除 ", ",结果为 "HelloWorld!"
4. 删除从指定位置到末尾的所有字符
只需指定起始位置,而不传递删除数量或结束位置,erase
会删除从该位置到字符串末尾的所有字符。
std::string str = "Hello, World!";
str.erase(5); // 从索引 5 开始删除,结果为 "Hello"
5. 清空整个字符串
通过不传递参数,erase
可以清空整个字符串。
std::string str = "Hello, World!";
str.erase(); // 清空整个字符串,结果为 ""
总结
erase(pos)
:删除从pos
开始的字符到末尾。erase(pos, n)
:删除从pos
开始的n
个字符。erase(first, last)
:删除从first
到last
之间的字符。
AC代码
#include <bits/stdc++.h>
using namespace std;
int main(){
string t = "acgo";
string s;
cin >> s;
for(char &i:s) {
if (i == t[0]) {
t.erase(t.begin());
}
}
if (t.empty()) {
cout << "YES" << endl;
}else {
cout << "NO" << endl;
}
return 0;
}
这里空空如也
有帮助,赞一个