Tuesday, July 10, 2018

[LeetCode]Prime Palindrome


这道题第一个想法就是每次找下一个更大的回文,验证其是否是质数。找下一个最大回文的思路我们在Find the Closest Palindrome当中讲过,我们用相似的思路即可。时间复杂度不太清楚如何分析,代码如下:



看了讨论区之后发现用数学的方法过滤一些数可以大大提高速度。因为所有长度为偶数的回文肯定不是质数(除了11),因为对于一个数,奇数位上的数的和与偶数位的上的数的和之间的差可以被11整除的话(包括0),这个数就可以被11整除。偶数长度的回文这个差值显然为0,所以必定可以被11整除,也就是说除了11之外,全都不是质数。那么我们在之前实现的基础上,不停get下一个回文的时候跳过所有长度为偶数的回文即可。代码如下:


No comments:

Post a Comment