5367 最長快樂字首(181周賽,KMP)

2021-10-04 06:19:07 字數 1590 閱讀 3572

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

給你乙個字串 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"

輸出:""

class solution 

else

} return s.substr(0, f[s.size()]);

}};

572. 另乙個樹的子樹

難度簡單475收藏分享切換為英文接收動態反饋

給定兩個非空二叉樹st,檢驗s中是否包含和t具有相同結構和節點值的子樹。s的乙個子樹包括s的乙個節點和這個節點的所有子孫。s也可以看做它自身的一棵子樹。

示例 1:

給定的樹 s:

3

/ \4 5

/ \1 2

給定的樹 t:

4 

/ \1 2

返回true,因為 t 與 s 的乙個子樹擁有相同的結構和節點值。

簡單的分支、判斷解法:

class solution 

bool judge(treenode* s, treenode* t)

};

通過前序遍歷將樹轉換為陣列,注意左右子節點為空也轉換為不同的值;通過kmp演算法判斷是否存在能匹配的子樹:

class solution ;

vectorres;

stack< treenode*>room;

room.push(s);

while (!room.empty())

return res;

} bool kmp(vector&a, vector&b)

else

} l = 0;

r = 0;

while (l < a.size())

else

r = f[r];

} return 0;

} bool issubtree(treenode* s, treenode* t)

};

leetcode 第181場周賽

第一次做周賽,只做出了兩道題,主要問題是數學基礎不牢並且對於字串kmp演算法沒掌握。因為資料量比較小,所以採取了暴力直接insert。輸入 nums 0,1,2,3,4 index 0,1,2,2,1 輸出 0,4,1,3,2 解釋 nums index target 0 0 0 1 1 0,1 2...

leetcode第 181 場周賽

給你兩個整數陣列nums和index。你需要按照以下規則建立目標陣列 請你返回目標陣列。題目保證數字插入位置總是存在。輸入 nums 0,1,2,3,4 index 0,1,2,2,1 輸出 0,4,1,3,2 解釋 nums index target 0 0 0 1 1 0,1 2 2 0,1,2...

leetcode 1392 最長快樂字首

起因,這是某一次周賽的最後一題,不會,後來了解到是利用kmp的next陣列.快樂字首 是在原字串中既是 非空 字首也是字尾 不包括原字串自身 的字串。給你乙個字串 s,請你返回它的 最長快樂字首。如果不存在滿足題意的字首,則返回乙個空字串。示例 1 輸入 s level 輸出 l 解釋 不包括 s ...