LeetCode題解(1639):統計只差一個字元的子串數目(Python)
題目:原題連結(困難)
標籤:動態規劃、雜湊表
解法 | 時間複雜度 | 空間複雜度 | 執行用時 |
---|---|---|---|
Ans 1 (Python) | O ( H × ( W + T ) ) O(H×(W+T)) O(H×(W+T)) : W為單詞數量 H為單詞長度 T為目標單詞長度 | O ( H × ( W + T ) ) O(H×(W+T)) O(H×(W+T)) | 2012ms (64%) |
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一(動態規劃):
class Solution:
def numWays(self, words: List[str], target: str) -> int:
# 預處理單詞列表
# O(W×H) W為單詞數量 H為單詞長度
size = len(words[0])
counts = [collections.Counter() for _ in range(size)]
for word in words:
for i, ch in enumerate(word):
counts[i][ch] += 1
# 生成狀態列表
dp = [[0] * size for _ in range(len(target))]
# 計算左上角
if target[0] in counts[0]:
dp[0][0] = counts[0][target[0]]
# 計算第一行
for j in range(1, size):
dp[0][j] = dp[0][j - 1]
if target[0] in counts[j]:
dp[0][j] += counts[j][target[0]]
# 計算其他位置
for i in range(1, len(target)):
for j in range(i, size):
dp[i][j] = dp[i][j - 1]
if target[i] in counts[j]:
dp[i][j] += dp[i - 1][j - 1] * counts[j][target[i]]
return dp[-1][-1] % (10 ** 9 + 7)
相關文章
- 題目7:統計字串中的各種字元的個數字串字元
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 【每日一題】無重複字元的最長子串每日一題字元
- LeetCode——無重複字元的最長子串LeetCode字元
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 73:字元統計★]題目描述:字元
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- leetcode-3無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- python常見面試題講解(二)計算字元個數Python面試題字元
- abc295D 統計由SS構成的子串個數
- LeetCode題解(1512):好數對的數目(Python)LeetCodePython
- 如何用Python統計不同字元個數?Python字元
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- 040統計數字字元的個數字元
- 統計字串字元個數字串字元
- leetcode 解題 3. 無重複字元的最長子串-python3@ 官方,暴力解法和視窗滑動解法LeetCode字元Python
- Leetcode 3.無重複字元的最長子串 字典記錄每個字元最後出現的位置LeetCode字元
- 利用HashMap統計字元個數HashMap字元
- 無重複字元的最長子串字元
- 3297. 統計重新排列後包含另一個字串的子字串數目 I字串
- 3298. 統計重新排列後包含另一個字串的子字串數目 II字串
- lc2953 統計完全子字串的數目字串
- 每天一道演算法題:無重複字元的最長子串演算法字元
- 雙子串最大異或 題解
- python 統計字串裡某個字元出現的次數count()Python字串字元
- 用python3統計一行字元中的英文字母,空格,數字和其他字元的個數Python字元
- java無重複字元的最長子串Java字元
- 3 無重複字元的最長子串字元
- LeetCode133:給定一個字串,找出最長的不具有重複字元的子串的長度。例如,“abcabcbb”不具有重複字元的最長子串是“abc”,長度為3。對於“bbbbb”,最長的不具有重複字元的子串是LeetCode字串字元
- hdu5384 AC自動機模板題,統計模式串在給定串中出現的個數模式
- 字元數統計字元
- [LeetCode] Longest Substring Without Repeating Characters 最長無重複字元的子串LeetCode字元