概述
引:
char[] str1 = s.toCharArray();
char[] str2 = p.toCharArray();
boolean dp[][] = newboolean[len1+1][len2+1];
dp[0][0] = true;
int i=0,temp=0;
boolean flag = true;
while(temp
if (str2[temp] == '*' && dp[0][temp]){
dp[0][temp+1] = true;
}
temp++;
}
while(i
int j =0;
while(j
if(str1[i] == str2[j] || str2[j]=='?'){
dp[i+1][j+1] = dp[i][j];
}
if(str2[j] == '*'){
dp[i+1][j+1] = (dp[i+1][j]||dp[i][j+1]);
}
j++;
}
i++;
}
return dp[len1][len2];
}
1、"动态规划是寻求一种对问题的观察角度,让问题能够以递推(或者说分治)的方法去解决"及此中重点是寻找看问题的角度。
2、"本质是对问题的状态定义和状态转移方程的定义”
对两个字符串的匹配?单个通配*0-n(无穷)问题的考虑
之前的状态不会影响之后的状态我们只考虑当前位置的匹配即可进行递推。(问题的拆分角度)
细节考虑:由于*的存在我们分情况考虑为单个为一个为多个的情况,取并集。
思路好理解关键是对新问题分解的考虑角度很关键。
public boolean isMatch(String s, String p) {
boolean res = true;
int len1 = s.length();
int len2 = p.length();
最后
以上就是清秀石头为你收集整理的Dynamic Programming的全部内容,希望文章能够帮你解决Dynamic Programming所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复