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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

139. Word Break

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 139. Word Break 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、題目

  1、審題

  2、分析

    給出一個字符串 S,一個字典表 dict,判斷 S 是否能由 dict 中的字符串所組成,其中 dict 中的字符串能夠多次使用。

?

二、解答

  1、思路:

    方法一、

      使用一個 DP 數組記錄 S 從下標 0 到當前下標位置是否能夠正確匹配。

     ?、?、從下標 i = 1 開始遍歷,在字典序列 dict 中查找是否能夠正確匹配到S 的下標 i ;

    

public boolean wordBreak(String s, List<String> wordDict) {int len = s.length();boolean[] f = new boolean[len+1];f[0] = true; // f[i] = true: 0 ~ i-1 是能匹配的。for(int i = 1; i <= len; i++) {for(String str: wordDict) {if(i - str.length() >= 0 && f[i - str.length()]) {if(s.substring(i - str.length(), i).equals(str)) {f[i] = true;break;}}}}

?

  方法二、

     使用一個 DP 數組記錄 S 從下標 0 到當前下標位置是否能夠正確匹配。

    

public boolean wordBreak11(String s, List<String> wordDict) {int len = s.length();boolean[] f = new boolean[len+1];f[0] = true; // f[i] = true: 0 ~ i-1 是能匹配的。for(int i = 1; i <= len; i++) {for (int j = 0; j < i; j++) {if(f[j] && wordDict.contains(s.substring(j, i))) {f[i] = true;break;}}}return f[len];}

?

  方法三、

    采用 BFS + DP 。

   ?、佟⒉捎靡粋€ DP 數組記錄到當前位置是否能夠正確匹配。

      采用一個Queue 記錄當前的廣度遍歷的節點。

      采用一個 Set 存儲字典的所有字符串,方便比較是否包含 S 的子串。

   ?、?、可以將查找過程看做一張圖,每次從一個節點開始 BFS 查找所有的節點,并填充 DP數組為 true,同時將節點加入 Queue中,繼續進行 BFS 遍歷。

      

public boolean wordBreak12(String s, List<String> wordDict) {int max_len = -1;for(String word: wordDict) max_len = Math.max(max_len, word.length());Set<String> wordDictSet = new HashSet<>(wordDict);Queue<Integer> queue = new LinkedList<Integer>();boolean[] visited = new boolean[s.length()];queue.add(0);while(!queue.isEmpty()) {int start = queue.remove();for(int end = start + 1; end <= s.length() && end - start <= max_len; end++) {if(wordDictSet.contains(s.substring(start, end)) && !(end < s.length() && visited[end])) {if(end == s.length() ) {return true;}queue.add(end);visited[end] = true;}}}return false;}

?

轉載于:https://www.cnblogs.com/skillking/p/9771712.html

總結

以上是生活随笔為你收集整理的139. Word Break的全部內容,希望文章能夠幫你解決所遇到的問題。

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