起因,這是某一次周賽的最後一題,不會,後來了解到是利用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入棧,以便第乙個遇到右括號與之後遇到的情況保持統...