CF1023A.Single Wildcard Pattern Matching
普及-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You are given two strings s and t. The string s consists of lowercase Latin letters and at most one wildcard character '*', the string t consists only of lowercase Latin letters. The length of the string s equals n, the length of the string t equals m.
The wildcard character '*' in the string s (if any) can be replaced with an arbitrary sequence (possibly empty) of lowercase Latin letters. No other character of s can be replaced with anything. If it is possible to replace a wildcard character '*' in s to obtain a string t, then the string t matches the pattern s.
For example, if s="aba*aba" then the following strings match it "abaaba", "abacaba" and "abazzzaba", but the following strings do not match: "ababa", "abcaaba", "codeforces", "aba1aba", "aba?aba".
If the given string t matches the given string s, print "YES", otherwise print "NO".
给你两个字符串 s 和 t。字符串 s 由小写拉丁字母组成,且最多包含一个通配符字符 '*';字符串 t 仅由小写拉丁字母组成。字符串 s 的长度为 n,字符串 t 的长度为 m。
字符串 s 中的通配符 '*'(如果存在)可以被替换为任意长度(可能为空)的小写拉丁字母序列。s 中的其他字符均不可被替换。若能将 s 中的通配符 '*' 替换为某个字符串,使得结果恰好等于 t,则称字符串 t 与模式 s 匹配。
例如,若 s="aba*aba",则以下字符串与之匹配:"abaaba"、"abacaba" 和 "abazzzaba";但以下字符串不匹配:"ababa"、"abcaaba"、"codeforces"、"aba1aba"、"aba?aba"。
若给定的字符串 t 与给定的字符串 s 匹配,则输出 "YES";否则输出 "NO"。
输入格式
The first line contains two integers n and m (1≤n,m≤2⋅105) — the length of the string s and the length of the string t, respectively.
The second line contains string s of length n, which consists of lowercase Latin letters and at most one wildcard character '*'.
The third line contains string t of length m, which consists only of lowercase Latin letters.
第一行包含两个整数 n 和 m(1≤n,m≤2⋅105),分别表示字符串 s 和字符串 t 的长度。
第二行包含一个长度为 n 的字符串 s,由小写拉丁字母组成,且最多包含一个通配符字符 '*'。
第三行包含一个长度为 m 的字符串 t,仅由小写拉丁字母组成。
输出格式
Print "YES" (without quotes), if you can obtain the string t from the string s. Otherwise print "NO" (without quotes).
如果可以从字符串 s 得到字符串 t,则输出 "YES"(不带引号);否则输出 "NO"(不带引号)。
输入输出样例
输入#1
6 10 code*s codeforces
输出#1
YES
输入#2
6 5 vk*cup vkcup
输出#2
YES
输入#3
1 1 v k
输出#3
NO
输入#4
9 6 gfgf*gfgf gfgfgf
输出#4
NO
说明/提示
In the first example a wildcard character '*' can be replaced with a string "force". So the string s after this replacement is "codeforces" and the answer is "YES".
In the second example a wildcard character '*' can be replaced with an empty string. So the string s after this replacement is "vkcup" and the answer is "YES".
There is no wildcard character '*' in the third example and the strings "v" and "k" are different so the answer is "NO".
In the fourth example there is no such replacement of a wildcard character '*' that you can obtain the string t so the answer is "NO".
在第一个例子中,通配符字符 '*' 可以被替换为字符串 "force"。因此,替换后的字符串 s 为 "codeforces",答案为 "YES"。
在第二个例子中,通配符字符 '*' 可以被替换为空字符串。因此,替换后的字符串 s 为 "vkcup",答案为 "YES"。
在第三个例子中,字符串中没有通配符字符 '*',且字符串 "v" 与 "k" 不同,因此答案为 "NO"。
在第四个例子中,不存在对通配符字符 '*' 的任何替换方式,使得能得到字符串 t,因此答案为 "NO"。
输入解题思路,AI测评打分。不知道怎么写?