题目链接:点击打开链接
类型:双字符串处理
解法:递归
public class Solution {
public boolean isMatch(String s, String p) {
if (p.length() < 1)
return s.length() == 0;
if (p.length() == 1)
return (s.length() == 1) && (s.charAt(0) == p.charAt(0) || p.charAt(0) == '.');
if (p.charAt(1) != '*')
{
if (s.length() < 1)
return false;
return (s.charAt(0) == p.charAt(0) || p.charAt(0) == '.') && isMatch(s.substring(1), p.substring(1));
}
else
{
if (isMatch(s, p.substring(2)))
return true;
int i = 0;
while (i<s.length() && (s.charAt(i) == p.charAt(0) || p.charAt(0) == '.'))
{
if (isMatch(s.substring(i+1), p.substring(2)))
return true;
++i;
}
return false;
}
}
}