题目: 通配符匹配
来自智得网
分析
动态规划
动态规划一般分为确定变量,确定状态转移方程,确定边界条件等三个步骤。
该题目需要两个变量,分别是s、p当前字符的位置。
假设当前 s 、 p 的位置分别是 i 和 j ,正则表达式的方程可以定位为 dp[i][j] , dp[i][j]的值为true或者false,分别表示匹配或者不匹配两种情况。
题解
public class Solution{
public boolean solute(String s, String p) {
int i = 0;
int j = 0;
int starIndex = -1;
int iIndex = -1;
while (i < s.length()) {
if (j < p.length() && (p.charAt(j) == '?' || p.charAt(j) == s.charAt(i))) {
++i;
++j;
} else if (j < p.length() && p.charAt(j) == '*') {
starIndex = j;
iIndex = i;
j++;
} else if (starIndex != -1) {
j = starIndex + 1;
i = iIndex+1;
iIndex++;
} else {
return false;
}
}
while (j < p.length() && p.charAt(j) == '*') {
++j;
}
return j == p.length();
}
}