๐ 44. ้้ ็ฌฆๅน้
2022ๅนด10ๆ10ๆฅ
- algorithm
๐ 44. ้้ ็ฌฆๅน้
้พๅบฆ: ๐
้ฎ้ขๆ่ฟฐ
่งฃๆณ
class Solution {
public boolean isMatch(String s, String p) {
// ๆ่ทฏ๏ผ
// dp[i][j] -
int row = s.length();
int col = p.length();
boolean[][] dp = new boolean[row + 1][col + 1];
// ๅๅงๅ
dp[0][0] = true;
for(int j = 1; j <= col; j ++) {
int n = j - 1;
if(p.charAt(n) == '*') {
dp[0][j] = dp[0][j - 1];
}
}
for(int i = 1; i <= row; i ++) {
for(int j = 1; j <= col; j ++) {
int m = i - 1;
int n = j - 1;
if(s.charAt(m) == p.charAt(n) || p.charAt(n) == '?') {
dp[i][j] |= dp[i - 1][j - 1];
} else {
if(p.charAt(n) == '*') {
dp[i][j] |= dp[i - 1][j]; // ๅฝๅๅญ็ฌฆ็ดๆฅๆตๆถ๏ผ* ไปๅญๅจ๏ผ่ฟๅฏ็ปง็ปญๆตๆถ
dp[i][j] |= dp[i - 1][j - 1]; // ๅฝๅๅญ็ฌฆไธบ * ๆๅๆตๆถ็ๅญ็ฌฆ๏ผ * ไธๅญๅจ
dp[i][j] |= dp[i][j - 1]; // * ไธๆตๆถไปปไฝๅญ็ฌฆ๏ผ* ไธๅญๅจ
}
}
}
}
return dp[row][col];
}
}