【发布时间】:2020-01-25 17:07:30
【问题描述】:
假设您有一个仅由“a”和“b”组成的字符串。编写一个递归函数,检查字符串是否使用以下规则生成: 1.字符串以'a'开头 2.每个'a'后面都没有或'a'或“bb” 3. 每个“bb”后面都没有或一个“a” 如果所有规则都遵循给定的字符串,则返回 true,否则返回 false。
public class temp {
public static boolean checkAB(String input) {
if (input.length() == 1) {
if (input.charAt(0) == 'a')
return true;
else
return false;
}
Boolean ans = checkAB(input.substring(0, input.length() - 1));
if (ans == false)
return ans;
else {
if (input.charAt(input.length() - 2) == 'a') {
if (input.charAt(input.length() - 1) == 'a' || input.charAt(input.length() - 1) == 'b')
return true;
else
return false;
}
if (input.charAt(input.length() - 2) == 'b') {
if (input.charAt(input.length() - 3) == 'a') {
if (input.charAt(input.length() - 1) == 'b') {
return true;
} else
return false;
}
if (input.charAt(input.length() - 3) == 'b') {
if (input.charAt(input.length() - 1) == 'a') {
return true;
} else
return false;
}
} else
return false;
}
return false;
}
public static void main(String args[]){
System.out.println(checkAB("abbbabaaa"));
}
}
【问题讨论】:
-
真的需要递归吗?
-
我很确定你可以用正则表达式来做到这一点。