📌  相关文章
📜  国际空间研究组织 | ISRO CS 2009 |问题2(1)

📅  最后修改于: 2023-12-03 14:50:46.474000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2009 | 问题2

问题描述

给定一个由大写字母构成的字符串,判断其中是否存在长度为3的回文子串。

输入格式

一行字符串。

输出格式

如果存在长度为3的回文子串,输出 YES,否则输出 NO

输入样例1
ABA
输出样例1
YES
输入样例2
ABC
输出样例2
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")
复杂度分析
  • 时间复杂度:$O(n^2)$
  • 空间复杂度:$O(1)$