给出两个字符串,分别是模式串P和目标串T,判断模式串和目标串是否匹配,匹配输出 1,不匹配输出 0。模式串中‘?’可以匹配目标串中的任何字符,模式串中的 ’*’可以匹配目标串中的任何长度的串,模式串的其它字符必须和目标串的字符匹配。例如P=a?b,T=acb,则P 和 T 匹配。
输入描述:
输入第一行包含一个字符串p, (1 ≤ |p| ≤ 20).
输入第二行包含一个字符串t, (1 ≤ |t| ≤ 20).
输出描述:
输出仅包含0和1的整数,0表示p和t不匹配,1表示p和t匹配。
输入
a?b ab
输出
0
输入
a*b ab
输出
1
输入
a*b a(cb
输出
1
备注:
保证T中不包含 ‘*’ 字符和 ‘?’ 字符
用C++搞了半天,结果发现用Java就需要几行就可以搞定。只怪自己太菜了。
Code:[Java]
链接:https://www.nowcoder.com/questionTerminal/2e2510b2e41e4d3b922416e51afc077b 来源:牛客网 import java.util.regex.Pattern; import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String p = scanner.nextLine(); String t = scanner.nextLine(); if (Pattern.matches(p.replace("*",".*").replace("?","."),t)){ System.out.println(1); }else { System.out.println(0); } } }