↓快轉到主要內容

String

LeetCode 2416: Sum of Prefix Scores of Strings
·1 分鐘
LeetCode Hard Trie String Counting
LeetCode 2416 解題筆記:Trie 每個節點記錄經過的單字數,單字的答案就是沿路計數的總和
LeetCode 940: Distinct Subsequences II
·1 分鐘
LeetCode Hard Dynamic-Programming String
LeetCode 940 解題筆記:依最後一個字元分類;以 c 結尾的不同子序列 = 目前所有不同子序列後面接 c,再加上 c 本身,直接覆蓋舊的值
LeetCode 1028: Recover a Tree From Preorder Traversal
·2 分鐘
LeetCode Hard Tree Binary-Tree Dfs Stack String
LeetCode 1028 解題筆記:用 stack 維護從根到目前節點的路徑,stack 長度就是深度
LeetCode 301: Remove Invalid Parentheses
·2 分鐘
LeetCode Hard Backtracking Bfs String
LeetCode 301 解題筆記:先算出最少要刪幾個左右括號再回溯;或用 BFS 一層刪一個,第一個出現合法字串的層就是答案
LeetCode 420: Strong Password Checker
·2 分鐘
LeetCode Hard Greedy String
LeetCode 420 解題筆記:分長度三種情況,太長時優先刪除 len % 3 == 0 的重複段來抵銷取代次數
LeetCode 2193: Minimum Number of Moves to Make Palindrome
·1 分鐘
LeetCode Hard Two-Pointers Greedy String Binary-Indexed-Tree
LeetCode 2193 解題筆記:貪心處理最外層:拿最後一個字元,把它最左邊的同伴換到最前面,花費是那個位置;落單的字元最後在正中間,花費是它到中間的距離
LeetCode 4026: Maximum Gap Between Stations
·2 分鐘
LeetCode Medium Two-Pointers Greedy String
LeetCode 4026 解題筆記:從左邊貪心配出每個工人最早可用的站、從右邊配出最晚可用的站;在第 i 和 i+1 個工人之間切開,最大間隔是 latest[i+1] - earliest[i]
LeetCode 1320: Minimum Distance to Type a Word Using Two Fingers
·1 分鐘
LeetCode Hard Dynamic-Programming State-Machine String
LeetCode 1320 解題筆記:打完 word[i] 時,一定有一根手指在 word[i] 上,狀態只要記另一根手指在哪;dp[other] 是另一根手指在 other 的最小距離
LeetCode 902: Numbers At Most N Given Digit Set
·1 分鐘
LeetCode Hard Dynamic-Programming Digit-Dp Math Binary-Search String
LeetCode 902 解題筆記:數位 DP,狀態是 (pos, tight, started);還沒開始時可以跳過這一位,代表位數比 n 少的數
LeetCode 1092: Shortest Common Supersequence
·4 分鐘
LeetCode Hard Dynamic-Programming String
LeetCode 1092 解題筆記,依照原始 learning note 重新整理
LeetCode 712: Minimum ASCII Delete Sum for Two Strings
·3 分鐘
LeetCode Medium Dynamic-Programming String
LeetCode 712 解題筆記,依照原始 learning note 重新整理
LeetCode 1312: Minimum Insertion Steps to Make a String Palindrome
·3 分鐘
LeetCode Hard Dynamic-Programming String Palindrome
LeetCode 1312 解題筆記,依照原始 learning note 重新整理