leetcode 1392 最長快樂字首

2021-10-04 14:50:14 字數 918 閱讀 2958

起因,這是某一次周賽的最後一題,不會,後來了解到是利用kmp的next陣列.

「快樂字首」是在原字串中既是 非空 字首也是字尾(不包括原字串自身)的字串。

給你乙個字串 s,請你返回它的 最長快樂字首。

如果不存在滿足題意的字首,則返回乙個空字串。

示例 1:

輸入:s = "level"

輸出:"l"

解釋:不包括 s 自己,一共有 4 個字首("l", "le", "lev", "leve")和 4 個字尾("l", "el", "vel", "evel")。最長的既是字首也是字尾的字串是 "l" 。

示例 2:

輸入:s = "ababab"

輸出:"abab"

解釋:"abab" 是最長的既是字首也是字尾的字串。題目允許前字尾在原字串中重疊。

示例 3:

輸入:s = "leetcodeleet"

輸出:"leet"

示例 4:

輸入:s = "a"

輸出:""

它這裡是求包含的字首的和字尾的最長子串。   於是,那麼最長的字首子串,必然包含0開頭的,最長字尾子串包含最後乙個。

而next陣列的含義是,next【i】是當i失配時,主串不動,子串移動到那個位置(同時,還有乙個隱含的意思,就是除去當前i字元,的子串最長的字首子串和字尾子串的長度。由於了解next陣列推導是由上一次的p[k] == p[j],p[j+1] = k+1),最長就在上一次匹配加1,否則只能更短了。那麼這個題目是求包含整個子串串的,於是,next陣列+1即可。

public string longestprefix(string s) 

public int getnext(char p) else

}return next;

}

Leetcode 最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。includ...

LeetCode 最長有效括號

方法一 方法二 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 有效的括號 括號的生成 出棧入棧方法 參考之前的有效括號題目,當 前乙個為 則刪除這對,當全部刪除則為有效括號。在棧...

LeetCode 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 思路 1 棧用來儲存讀取到的括號的下標,而不是括號字元。初始時為了統一現在棧底將 1入棧,以便第乙個遇到右括號與之後遇到的情況保持統...