找到最长的子字符串,它是前缀、后缀并且也出现在 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

猜你喜欢