日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

小米面试题:单词拆分

發布時間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小米面试题:单词拆分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:
給定一個非空字符串 s 和一個包含非空單詞列表的字典 wordDict,判定 s 是否可以被空格拆分為一個或多個在字典中出現的單詞。

說明:
拆分時可以重復使用字典中的單詞。
你可以假設字典中沒有重復的單詞。

示例 1:

輸入: s = “leetcode”, wordDict = [“leet”, “code”]
輸出: true
解釋: 返回 true 因為 “leetcode” 可以被拆分成 “leet code”。

示例 2:

輸入: s = “applepenapple”, wordDict = [“apple”, “pen”]
輸出: true
解釋: 返回true 因為 “applepenapple” 可以被拆分成 “apple pen apple”。注意你可以重復使用字典中的單詞。

示例 3:

輸入: s = “catsandog”, wordDict = [“cats”, “dog”, “sand”, “and”, “cat”]
輸出: false

解題方案:動態規劃

//單詞拆分 //wordDict 單詞字典 //dp[i] 表示前一個字符能否被拆分成功字典中出現的單詞 //s 是源字符串 func wordBreak(s string, wordDict []string) bool {//定義一個mapwordDictSet := make(map[string]bool)for _, w := range wordDict {wordDictSet[w] = true //key是每個單詞}dp := make([]bool, len(s) + 1)dp[0] = truefor i := 1; i <= len(s); i++ {for j := 0; j < i; j++ {if dp[j] && wordDictSet[s[j:i]] {dp[i] = truebreak}}}return dp[len(s)] }

依次遍歷0~i之間的字符串,每次判斷0~i之間的字符串是否滿足字典里面的要求。d[j]保留了前j字符對應的狀態,wordDictSet[s[j:i]]為最后一個字符串的狀態,最后一個字符串前面所有的字符串都可以通過d[j]來判斷是否滿足條件。
如果有匹配,則返回對應dp下標對應的狀態。

時間復雜度:O(n^2)
空間復雜度:O(n)

?

?

參考地址:https://leetcode-cn.com/problems/word-break/solution/dan-ci-chai-fen-by-leetcode-solution/

?

?

?

總結

以上是生活随笔為你收集整理的小米面试题:单词拆分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。