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

标签 c++ arrays string

我有一个算法应该接受一个名为 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/

相关文章:

c++ - 我应该通过单独的进程编写自己的故障转储还是依赖 WER?

c++ - 如何自记录模板库类调用的回调函数?

c++ - 在 .cpp 标准中包含文件

Python pandas/numpy 将 1 填充到具有值的单元格,并将 0 填充到 nan 的单元格

C++ Lua,获取全局字符串

python - PyGILState_Ensure() 导致死锁

php - 将第二个数组添加到 foreach 查询中

c - 如何比较传递给函数的数组元素的值

c - 尝试访问 C 中字符串数组的第一个字符时出现段错误

python - 从字符串生成所有 n 元组