string - 递归字符串匹配 - 在一个测试用例上给出相反的输出
问题描述
通过了 5/6 的测试用例和 3/3 的示例用例。未通过一个隐藏的测试用例
- 字符串以 . 开头
a
。 - 每个
a
后面都跟没有或一个a
orbb
。 - 每个
bb
后面都没有或a
.
如果给定字符串遵循所有规则,则返回 true,否则返回 false。
样本输入:abbaabb
样本输出:真
#include <iostream>
using namespace std;
bool checkAB(char input[])
{
bool answer = true;
if (input[0] == 'P' && input[1] == '\0')
return true;
if (input[0] != 'P')
{
if (input[0] == 'a' && (input[1] == '\0' || input[1] == 'a' || (input[1] == 'b' && input[2] == 'b')))
{
input[0] = 'P';
return checkAB(input);
}
}
else if (input[0] == 'P')
{
if (input[1] == 'a' && (input[2] == '\0' || input[2] == 'a' || (input[2] == 'b' && input[3] == 'b')))
answer = true;
else if (input[1] == 'a' && (input[2] == 'b' && input[3] == 'a'))
answer = false;
if (input[1] == 'b' && input[2] == 'b' && (input[3] == '\0' || input[3] == 'a'))
answer = true;
else if (input[1] == 'b' && input[2] == 'b' && input[3] == 'b')
answer = false;
}
if (answer == false)
return false;
else
{
input[1] = 'P';
return checkAB(input + 1);
}
}
int main()
{
char input[100];
bool ans;
cin >> input;
ans = checkAB(input);
if (ans)
cout << "true" << endl;
else
cout << "false" << endl;
}
我正在迭代输入数组并将 as 标记index 0
为'P'
递归PASS
并检查上述的连续输入3 rules
。一旦任何一条规则被打破,我就会answer
false
递归返回,或者在我继续前进时保持答案true
和索引 0,最后当我到达字符串末尾时,我会返回。'P'
(input[0] == 'P' && input[1] == '\0')
解决方案
推荐阅读
- javascript - 如何同时检测浏览器和移动设备?JavaScript
- python - 使用 Python Flask 的后续表单
- c# - C# worker 服务与 windows 服务
- r - R:读取缺少最后一列的 fwf 文件
- java - 在同一 TomEE 实例上的并行应用程序中使用 JasperReports 是不可能的(JasperReports 上下文)?
- c# - 自定义模型绑定器不会影响 ASP.NET CORE 3.1 中的属性
- javascript - 如何获取所选选项的索引
- java - 如何将精灵移动到与 Java 中的其他精灵相同的级别?
- php - Hostgator 与服务器的连接失败 PHP V 7.1
- python - 使用 re.findall 在没有括号的数据框中创建新列