找到最长的子字符串,它是前缀、后缀并且也出现在 Python 中的字符串中
假设我们有一个给定的字符串,我们必须找到最大的子字符串,它是给定字符串的前缀、后缀和子字符串。如果没有这样的子串,则返回-1。
因此,如果输入类似于“languagepythonlanguageinterestinglanguage”,那么输出将是“language”
在线示例
让我们看看以下实现以获得更好的理解-
def get_lps(string): n = len(string) long_pref_suff = [0 for i in range(n)] size = 0 long_pref_suff[0] = 0 i = 1 while (i < n): if (string[i] == string[size]): size += 1 long_pref_suff[i] = size i += 1 else: if (size != 0): size = long_pref_suff[size - 1] else: long_pref_suff[i] = 0 i += 1 return long_pref_suff def get_longest_substr(string): long_pref_suff = get_lps(string) n = len(string) if (long_pref_suff[n - 1] == 0): return -1 for i in range(0,n - 1): if (long_pref_suff[i] == long_pref_suff[n - 1]): return string[0:long_pref_suff[i]] if (long_pref_suff[long_pref_suff[n - 1] - 1] == 0): return -1 else: return string[0:long_pref_suff[long_pref_suff[n - 1] - 1]] string = "languagepythonlanguageinterestinglanguage" print(get_longest_substr(string))
输入
"languagepythonlanguageinterestinglanguage"输出结果
language