📅  最后修改于: 2023-12-03 14:50:46.474000             🧑  作者: Mango
给定一个由大写字母构成的字符串,判断其中是否存在长度为3的回文子串。
一行字符串。
如果存在长度为3的回文子串,输出 YES
,否则输出 NO
。
ABA
YES
ABC
NO
题目要求判断字符串是否存在长度为3的回文子串,我们可以枚举所有长度为3的子串,判断是否为回文串即可。
时间复杂度为 $O(n^3)$,对于长度为 $n$ 的字符串,不太适合使用此种解法。
我们可以采用滑动窗口的思想优化,每次移动窗口只需要判断新增的一个字符和去掉的一个字符是否对回文串的判断造成影响,时间复杂度为 $O(n^2)$。
def is_palindrome(s):
return s == s[::-1]
s = input().strip()
for i in range(len(s) - 2):
if is_palindrome(s[i:i+3]):
print("YES")
break
else:
print("NO")