CF1023A
题目传送门
题目主要内容
题目要求判断给定两个字符串 \(s\) 和 \(t\) 是否匹配。字符串 \(s\) 可以包含一个通配符,它可以表示任意长度的字符序列。如果可以通过替换 \(s\) 中的通配符来得到字符串 \(t\),则表示匹配。
主要知识:
字符串处理:包括字符串的比较,截取,查找等操作。
字符串匹配:根据题目要求进行字符串匹配,判断两个字符串是否相等或部分匹配。
这道题目主要涉及到了字符串的匹配和处理,以及一些相关的字符串操作函数。通过观察字符串中的通配符和使用字符串匹配的方式,可以判断给定的字符串是否匹配。
AC Code:
#include <iostream>
#include <string>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
string s, t;
cin >> s >> t;
if (s == t) {
cout << "YES" << endl;
} else if (s.find('*') != string::npos) {
int wildcard_pos = s.find('*');
string s_prefix = s.substr(0, wildcard_pos);
string s_suffix = s.substr(wildcard_pos+1);
if (t.length() >= s.length()-1 && t.substr(0, s_prefix.length()) == s_prefix && t.substr(t.length()-s_suffix.length()) == s_suffix) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
} else {
cout << "NO" << endl;
}
return 0;
}
本文来自一名初中牲,作者:To_Carpe_Diem