[leetcode] 1624. Largest Substring Between Two Equal Characters

農民小飛俠發表於2020-10-29

Description

Given a string s, return the length of the longest substring between two equal characters, excluding the two characters. If there is no such substring return -1.

A substring is a contiguous sequence of characters within a string.

Example 1:

Input: s = "aa"
Output: 0
Explanation: The optimal substring here is an empty substring between the two 'a's.

Example 2:

Input: s = "abca"
Output: 2
Explanation: The optimal substring here is "bc".

Example 3:

Input: s = "cbzxy"
Output: -1
Explanation: There are no characters that appear twice in s.

Example 4:

Input: s = "cabbac"
Output: 4
Explanation: The optimal substring here is "abba". Other non-optimal substrings include "bb" and "".

Constraints:

  • 1 <= s.length <= 300
  • s contains only lowercase English letters.

分析

題目的意思是:移除兩個相同字串後剩下子串的最大長度,很顯然分別移除位於最左的相同字串就可以了。因此用一個字典儲存字串最左邊的位置,當遍歷到相同的字串維護更新最大長度res就行了。

程式碼

class Solution:
    def maxLengthBetweenEqualCharacters(self, s: str) -> int:
        d={}
        res=-1
        for i in range(len(s)):
            if(s[i] in d):
                res=max(res,i-d[s[i]]-1)
            else:
                d[s[i]]=i
        return res

參考文獻

[LeetCode] 3 Solutions | Naive | Two Pass | One Pass O(n)

相關文章