CSP-201409-3-字符串匹配
关键点:<string>
库函数的使用
-
length()
或size()
: 返回字符串的长度。 -
empty()
: 检查字符串是否为空。 -
append()
或+=
: 向字符串的末尾添加字符或另一个字符串。 -
insert()
在字符串的指定位置插入另一个字符串或字符。
std::string str = "HelloWorld";
str.insert(5, " "); // 插入空格在位置5,结果:"Hello World"
erase()
从字符串中删除一段子字符串。
std::string str = "Hello World";
str.erase(5, 6); // 从位置5开始删除6个字符,结果:"Hello"
replace()
替换字符串中的一段子字符串。
std::string str = "Hello World";
str.replace(6, 5, "There"); // 从位置6开始替换5个字符,结果:"Hello There"
find()
在字符串中查找另一个字符串或字符的第一次出现。
std::string str = "Hello World";
size_t pos = str.find("World"); // 返回"World"首次出现的位置,结果:6
if (pos != std::string::npos) {
// 找到了
}
substr()
从字符串中提取一段子字符串。
std::string str = "Hello World";
std::string sub = str.substr(6, 5); // 从位置6开始提取5个字符,结果:"World"
compare()
比较两个字符串。
std::string str1 = "Hello";
std::string str2 = "World";
int result = str1.compare(str2); // 比较两个字符串
if (result == 0) {
// 字符串相等
} else if (result < 0) {
// str1 小于 str2
} else {
// str1 大于 str2
}
clear()
: 清空字符串,等同于删除所有字符。
解题代码
#include<iostream>
#include<string>
#include<vector>
using namespace std;
string Trans2Small(string str) {
int delta = 'A' - 'a';
for (auto& it : str) {
if (it >= 'A' && it < 'Z') // 大写转小写
{
it -= delta;
}
}
return str;
}
int main()
{
string subStr;
cin >> subStr;
bool sensitive;
cin >> sensitive;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
string str;
cin >> str;
if (!sensitive) // 大小写不敏感
{
string subStrTemp = Trans2Small(subStr);
string strTemp = Trans2Small(str);
if (strTemp.find(subStrTemp) != -1)
{
cout << str << endl;
}
}
else // 大小写敏感
{
if (str.find(subStr) != -1)
{
cout << str << endl;
}
}
}
return 0;
}