我正在编写一个递归方法来检查字符串的每个字母以比较它们。我无法使“*”字符与任何字符匹配,并根据需要充当尽可能多的字母。(使其成为通配符)
我想知道是否有人可以给我一个关于将使用的算法的提示?
这是我到目前为止所拥有的。
public static boolean match(String x, String y) {
return match_loop(x, y, 0, 1);
}
public static boolean match_loop(String a, String b, int i, int s) {
try {
if (a == b) {
return true;
}
if (i >= a.length() && i >= b.length()) {
return true;
}
if (a.charAt(i) == b.charAt(i)) {
return match_loop(a, b, i + 1, s);
}
//(((...A bunch of if statements for my other recursion requirements
return false;
} catch (java.lang.StringIndexOutOfBoundsException e) {
return false;
}
}
public static void main(String[] args) {
System.out.println(match("test", "t*t")); // should return true
}
我想做的是在该方法中添加另一个参数,一个 int 将充当一个字母反向计数器。基本上,如果 char(is) 处的 a 或 b (s 最初为 1.) 是 *,我正在考虑这一点,回想一下 s+1 的递归。然后使用更多不同的 ifs 语句来修复错误。然而,这种方法似乎真的很长而且重复。我可以使用其他算法吗?