给出两个字符串,分别是模式串P和目标串T,判断模式串和目标串是否匹配,匹配输出 1,不匹配输出 0。模式串中‘?’可以匹配目标串中的任何字符,模式串中的 ’*’可以匹配目标串中的任何长度的串,模式串的其它字符必须和目标串的字符匹配。例如P=a?b,T=acb,则P 和 T 匹配。
a?b
ab
输出例子1:
0
输入例子2:
a*b
ab
输出例子2:
1
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
String p=sc.nextLine();
String s=sc.next();
if(ispattern(p,0,s,0))
System.out.println(1);
else
System.out.println(0);
}
// ? return s+1,p+1
// * return s+1,p and s,p+1
public static boolean ispattern(String p,int i,String s,int j){
if(s.length()==j)
return p.length()==i||(p.length()==i+1&&p.charAt(i)=='*');
if(i==p.length())
return false;
if(p.charAt(i)=='?'||p.charAt(i)== s.charAt(j))
return ispattern(p,i+1,s,j+1);
if(p.charAt(i)=='*')
return ispattern(p,i,s,j+1)||ispattern(p,i+1,s,j);
return false;
}
}