0

我试图实现回文的解决方案,我认为我的逻辑是正确的,但是我的程序陷入了无限循环,并且我收到一条错误消息“Prep.exe 已停止工作”

int main()
{
    string word, reverse;

    cout << "Please enter a word to test for palindrome : ";
    cin >> word;
    cout << "Your word is: "<< word << endl;

    int i = 0;
    int size = word.length() - 1;
    while (size >= 0)
    {
        reverse[i++] = word[size--];
        //cout << reverse[i++];
    }

    cout << "The reversed word is: " << reverse << endl;


    if (word == reverse)
        cout << "It is palindrome" << endl;
    else
        cout << "It is not a palindrome" << endl;
}

我不确定我的 while 循环做错了什么。我继续递减它并且我有一个有效的退出条件,那么为什么它会陷入循环?

4

2 回答 2

6

你没有得到一个无限循环;由于行中的越界访问,您会遇到崩溃,reverse[i++]因为reverse它是一个空字符串。请尝试改用该reverse.push_back()功能。

于 2012-12-06T02:09:52.897 回答
0

您是否初始化了变量 reverse 只需检查它并在初始化后尝试。

希望有效

于 2012-12-06T02:09:49.260 回答