题目描述
在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。
实现如下2个通配符:
*:匹配0个或以上的字符
?:匹配1个字符
字符由英文字母和数字0-9组成,不区分大小写
eg:
输入:
te?t*.*
txt12.xls
输出:
false
以下是本篇文章正文内容,下面案例可供参考
代码如下
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
String s1 = sc.nextLine();
String s2 = sc.nextLine();
System.out.println(match(s1, s2, 0, 0));
}
}
/**
* 字符串通配符
*
* @param s1
* @param s2
* @param c1
* @param c2
* @return
*/
public static boolean match(String s1, String s2, int c1, int c2) {
if (c1 == s1.length() && c2 == s2.length()) {
return true;
}
if (c1 == s1.length() || c2 == s2.length()) {
return false;
}
if (s1.charAt(c1) == '?') {
return match(s1, s2, c1 + 1, c2 + 1);
} else if (s1.charAt(c1) == '*') {
return match(s1, s2, c1 + 1, c2) || match(s1, s2, c1 + 1, c2 + 1) || match(s1, s2, c1, c2 + 1);
} else if (s1.charAt(c1) == s2.charAt(c2)) {
return match(s1, s2, c1 + 1, c2 + 1);
} else {
return false;
}
}
}