-4

可能重复:
编写一个函数,返回给定字符串中最长的回文

我有一个 C++ 任务,希望我编写一个程序,在给定文本中找到最长的回文。例如,文本是这样的:asdqerderdiedasqwertunut,我的程序应该tunut在 19 的索引中找到。但是,如果将输入更改为此astunutsaderdiedasqwertunut,它应该astunutsa在 0 的索引中找到,而不是tunut在 22 的索引中。

所以,我的问题是这个。但我是该主题的初学者,我只知道字符串类、循环、ifs。如果你能在这方面帮助我,那就太好了。

提前致谢。

4

2 回答 2

3

这个想法很简单:

  • 编写一个函数is_palindrome(string),接收一个字符串,true如果是回文false则返回,否则返回
  • 使用该函数,编写两个嵌套循环,从原始字符串中删除不同的子字符串。将每个子字符串传递给is_palindrome(string),并在返回的字符串中选择最长的一个true

您可以通过在较短的子字符串之前检查最长的子字符串来进一步优化您的程序。如果您从最长到最短检查子串,您将能够在找到第一个回文后立即返回。

于 2012-04-13T00:09:42.327 回答
1

Dasblinkenlight 的想法很不错,但是这样更快:

回文有偶数个字母或奇数个字母,所以你有两种情况。让我们从偶数开始。您需要找到两个连续相同的字母,然后检查前一个字母是否与下一个字母相同。在其他情况下也是如此,除了起初您只需要一个字母。我英语说得不太好,所以希望你能理解。:)

于 2012-04-13T00:29:04.240 回答