题目描述:
给你一个字符串a和一个正整数n,判断a中是否存在长度为n的回文子串。如果存在,则输出YES,否则输出NO。 回文串的定义:记串str逆序之后的字符串是str1,若str=str1,则称str是回文串,如”abcba”.
分析
我们对于回文的判断,已经比较熟悉了。 我们要找到是否存在 长度为 n 的回文子串,那么首先一个比较直观的想法就是: 把每一个长度为 n 的子串都判断一下是否为 回文串。
当没有判断的剩下串长度 小于 n 就没有必要进行判断了。 毕竟已经不满足长度为 n 这一个条件了。
# 用来判断 当前字符串是否为 回文串
def palindrome(string):
string_a = string[::-1]
return string_a == string
len_a = len(a)
flag = "NO"
for i in range(0, len_a):
# 当最后剩下 子串长度小于 n 了以后,就没有必要再往后面走了。
if i + n > len_a:
break
string = a[i:i+n]
if palindrome(string):
flag = "YES"
break
print(flag)