题解 | #字符串通配符#
字符串通配符
https://www.nowcoder.com/practice/43072d50a6eb44d2a6c816a283b02036
递归算法,改进了一下,正好踩点通过
import java.util.Scanner;
public class Main27 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
while (in.hasNext()) {
String str = in.nextLine().toLowerCase();
String str1 = in.nextLine().toLowerCase();
System.out.println(isBoolean(str,str1,0,0));
}
}
static boolean isBoolean(String str,String str1 ,int n,int m){
if (str.length() == n && str1.length() == m){
return true;
}
if (str.length() == n || str1.length() == m){
return false;
}
if (str.charAt(n) == str1.charAt(m)){
return isBoolean(str,str1,n+1,m+1);
}
if (str.charAt(n) == '*' && n+1 !=str.length() && str.charAt(n+1) == '*'){
return isBoolean(str,str1,n+1,m);
}
if (str.charAt(n) == '?' && ((str1.charAt(m) >= '0' && str1.charAt(m) <= '9')|| (str1.charAt(m) >= 'a' && str1.charAt(m) <= 'z'))){
return isBoolean(str,str1,n+1,m+1);
}else if (str.charAt(n) == '*' && ((str1.charAt(m) >= '0' && str1.charAt(m) <= '9')|| (str1.charAt(m) >= 'a' && str1.charAt(m) <= 'z'))){
return isBoolean(str,str1,n,m+1)||isBoolean(str,str1,n+1,m+1)||isBoolean(str,str1,n+1,m);
}else {
return false;
}
}
}
}
}

