gpt4 book ai didi

c++ - 检查 IX 或 IV 后是否跟另一个字符

转载 作者:行者123 更新时间:2023-11-28 02:07:06 25 4
gpt4 key购买 nike

我有一个算法应该接受一个名为 str 的字符串,并根据定义为的特定规则检查它:

IX 或 IV 之后没有任何内容。如果规则没有被破坏,它将打印 legal,如果规则被破坏,它将打印 Illegal。

这是我创建的代码:

string str = "MXCIVXX";
int length = str.length();
bool legal = true;
for (int i = 0; i < length; i++) {
if ((str[i] == 'I' && str[i + 1] == 'X') && (str[i + 2] != '/0'))
legal = false;

if ((str[i] == 'I' && str[i + 1] == 'V') && (str[i + 2] != '/0'))
legal = false;
}
if (legal == true)
cout << "Legal" << endl;
else if (legal == false)
cout << "Illegal" << endl;

我已经测试了字符串中的多个罗马数字,但如果 IX 后跟字符串中的另一个字符,它会打印出合法的结果。我该如何解决这个问题以确认 IX 或 IV 后面没有跟另一个字符?

最佳答案

你的意思是空字符,所以 '\0' 而不是 '/0'

此外,您的方法不准确(请阅读以下评论并感谢 @NathanOliver)。这种方法应该效果更好:

int main() 
{
std::string str = "IX";
int size = str.size();
bool legal = true;


if (str[size - 2] == 'I') // the char before the last char
{
if (str[size - 1] == 'V' || str[size - 1] == 'X') // the last char
legal = true;
else
legal = false;
}
else
legal = false;

if (legal)
std::cout << "Legal" << std::endl;
else
std::cout << "Illegal" << std::endl;

getchar();
return 0;
}

关于c++ - 检查 IX 或 IV 后是否跟另一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37079829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com