可能重复:
Write a function that returns the longest palindrome in a given string
我有一个C ++作业,要求我编写一个程序,找到给定文本中最长的回文。例如,文本为:asdqerderdiedasqwertunut
,我的程序应在索引19中找到tunut
。但是,如果输入更改为此astunutsaderdiedasqwertunut
,则应找到astunutsa
在索引22中索引为0而不是tunut
。
所以,我的问题是这个。但我是这个主题的初学者,我知道只是字符串类,循环,ifs。如果你可以帮助我,那就太棒了。
提前致谢。
答案 0 :(得分:3)
这个想法非常简单:
is_palindrome(string)
,如果它是回文,则返回true
,如果不是,则返回false
is_palindrome(string)
,然后选择返回true
的字符串中最长的字符串。您可以通过检查较短的子串之前的最长子串来进一步优化您的程序。如果您检查从最长到最短的子串,您将能够在找到第一个回文后立即返回。
答案 1 :(得分:1)
Dasblinkenlight的想法非常好,但这种方式更快:
回文有偶数个字母或奇数,所以你有两种情况。让我们从均匀开始吧。您需要找到两个连续相同的字母,然后检查前一个字母是否与下一个字母相同。在另一种情况下也一样,除了起初你只需要一个字母。我不会说英语,所以我希望你理解。 :)