在Python中查找两个相等字符之间的最长子字符串的程序

在Python中查找两个相等字符之间的最长子字符串的程序

假设有一个字符串s,我们要找到两个相等字母或元素之间最长的子字符串的长度,不包括这两个字符。如果我们找不到这样的子字符串,则返回-1。

因此,如果输入是s =“level”,则输出将为3,因为最佳子字符串可以是“lev”或“vel”。

要解决此问题,我们将遵循以下步骤−

  • memo: =一个新映射

  • 对于 i 在范围0到s的大小-1内,执行以下操作

    • 如果s[i]在memo中,则
      • 在memo[s[i]]的末尾插入i
    • 否则,
      • memo[s[i]]:=一个只有一个元素i的列表
  • best := 0

  • 对于每个键在memo中,执行以下操作

    • best:=最佳和(memo[key]的最后一个元素- memo[key]的第一个元素)
  • 返回best – 1

更多Python相关文章,请阅读:Python 教程

示例(Python)

def solve(s):
   memo = {}
   for i in range(len(s)):
      if s[i] in memo:
         memo[s[i]].append(i)
      else:
         memo[s[i]] = [i]

   best = 0
   for key in memo:
      best = max(best, memo[key][-1] - memo[key][0])
   return best - 1

s = "level"
print(solve(s))

输入

"level"

输出

3

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程