📅  最后修改于: 2023-12-03 15:07:33.413000             🧑  作者: Mango
判断给定的字符串是否是双后缀字符串,如果是则返回该字符串的长度,否则返回-1。
双后缀字符串是指既是前缀又是后缀的字符串。例如,字符串“abab”既是“ab”的前缀,又是“ab”的后缀,因此它是一个双后缀字符串。
输入的第一行包含一个整数T,表示测试用例的数量。每个测试用例包含一个字符串S。
对于每个测试用例,如果该字符串是双后缀字符串,则输出该字符串的长度,否则输出-1。
3
abab
abaca
aadaa
4
-1
3
此题的难点在于如何判断一个字符串是否为双后缀字符串。由于一个双后缀字符串是既是前缀又是后缀的字符串,因此我们可以从字符串的两端同时向中间扫描,记录下两端扫描遇到的最长相同前缀,然后比较这个前缀是否满足要求。
如果一个前缀可以同时作为一个字符串的前缀和后缀,那么这个前缀的长度一定是字符串的总长度的一半。因此,我们只需要将字符串的长度除以二,然后判断前半部分是否与后半部分相同即可。
def is_double_suffix(s):
n = len(s)
if n % 2 != 0:
return False
mid = n // 2
return s[:mid] == s[mid:]
def get_double_suffix_len(s):
if is_double_suffix(s):
return len(s)
else:
return -1
t = int(input())
for i in range(t):
s = input().strip()
print(get_double_suffix_len(s))
以上代码是一个 Python 代码示例,用于判断一个字符串是否为双后缀字符串,并返回字符串的长度。首先判断字符串的长度是否为偶数,如果不是,则字符串一定不是双后缀字符串。然后将字符串分为两部分,分别判断前半部分和后半部分是否相同,如果相同则字符串是双后缀字符串,返回字符串的长度,否则返回-1。
代码的输入格式为测试用例的数量和每个测试用例的字符串,输出格式为每个测试用例的结果,即判断字符串是否为双后缀字符串,并返回字符串的长度或-1。
以上代码示例为markdown格式。