# Program to find largest substring between two equal characters in Python

Suppose we have a string s, we have to find the length of the longest substring between two equal letters or elements, excluding the two characters. If we cannot find such substring, then return -1.

So, if the input is like s = "level", then the output will be 3 as optimal substrings can be either "lev" or "vel".

To solve this, we will follow these steps −

• memo := a new map

• for i in range 0 to size of s - 1, do

• if s[i] is in memo, then

• insert i at the end of memo[s[i]]

• otherwise,

• memo[s[i]] := a list with only one element i

• best := 0

• for each key in memo, do

• best := maximum of best and (last element of memo[key] - first element of memo[key])

• return best - 1

## Example (Python)

Live Demo

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])
return best - 1

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

## Input

"level"

## Output

3