2017-10-15 56 views
-2

在试图解决UVa 11475 - Extend to Palindrome我想出了下面的算法:扩展到回文

#include <algorithm> 
#include <iostream> 
using namespace std; 

int main() { 
    string word; 
    while (cin >> word) { 
     unsigned long i(0), j(word.size() - 1); 
     while (i < j) { 
      if (word[i] != word[j]) 
       word.insert(j + 1, 1, word[i]); 
      else 
       j--; 
      i++; 
     } 
     cout << word << endl; 
    } 
    return 0; 
} 

但结果是“错误的答案”,尽管该代码给的样品输入正确的输出。那么我在这里错过了什么?什么样的测试案例可能造成这种情况?

我的教授告诉我们要检查KMP算法,作为提示,但我不明白字符串搜索算法在检查字符串是否为回文时需要做些什么。

回答

-1

例如检查测试

adbad

它给出错误的答案

+2

这是一个注释你的程序。没有答案。 –

+0

是否有以“adbad”开头的回文串比“adbadabda”短? –

+0

不,但是你的程序给出了答案adbabda,你也可以尝试aseas,你的程序输出是:aseaesa –