我正在尝试查找以下程序的运行时复杂性,但是没有运气。我相信该程序将在指数时间内运行,因为在最坏的情况下我们递归地两次调用该函数,而每个调用又被调用两次。但是我无法完全得出它。
我已从leetcode中提供的一种解决方案中提取了此代码,用于查找regular expression match。
public boolean isMatch(String text, String pattern) {
if (pattern.isEmpty()) {
return text.isEmpty();
}
boolean first_match = (!text.isEmpty() &&
(pattern.charAt(0) == text.charAt(0) || pattern.charAt(0) == '.'));
if (pattern.length() >= 2 && pattern.charAt(1) == '*'){
return (isMatch(text, pattern.substring(2)) ||
(first_match && isMatch(text.substring(1), pattern)));
} else {
return first_match && isMatch(text.substring(1), pattern.substring(1));
}
}