๐ŸŒ— 139. ๅ•่ฏๆ‹†ๅˆ†

ๅžไฝ›็ซฅๅญ2022ๅนด6ๆœˆ9ๆ—ฅๅฐไบŽ 1 ๅˆ†้’Ÿ

๐ŸŒ— 139. ๅ•่ฏๆ‹†ๅˆ†

้šพๅบฆ: ๐ŸŒ—

้—ฎ้ข˜ๆ่ฟฐ

img_31.png


่งฃๆณ•

class Solution {
    public boolean wordBreak(String s, List<String> wordDict) {
        // ๆ€่ทฏ๏ผš
        // dp[i] = dp[i - [j]]
        int len = wordDict.size();
        int amount = s.length();
        boolean[] dp = new boolean[amount + 1];
        dp[0] = true;
        for(int i = 1; i <= amount; i ++) {
            for(int j = 0; j < len; j ++) {
                // ๅ‡่ฎพ้œ€่ฆ [j] ๅค„็š„ๅ•่ฏ๏ผŒๅˆ™ ไปฅ i ไธบๆœ€ๆœซไธ‹ๆ ‡๏ผŒๅพ€ๅ‰ๆŽจ่ฟ™ไธชๅ•่ฏๅฟ…้กปๅŒน้…
                // ไธ”้™คๅŽป่ฟ™ไธชๅ•่ฏ็š„ๅ‰้ข้ƒจๅˆ†ไนŸๅฟ…้กปๅŒน้…
                String cur = wordDict.get(j);
                int size = cur.length();
                if(i - size >= 0 && dp[i - size]) {
                    if(mySol(s, i - size, cur)) {
                        dp[i] = true;
                    }
                }
            }
        }
        return dp[amount] == true;
    }

    private boolean mySol(String s, int from, String cur) {
        int index = from;
        int len = cur.length();
        for(int i = 0; i < len; i ++) {
            if(s.charAt(index + i) != cur.charAt(i)) {
                return false;
            }
        }
        return true;
    }
}

่พ“ๅ‡บ

img_30.png

ไธŠๆฌก็ผ–่พ‘ไบŽ: 2022/6/20 ไธ‹ๅˆ8:24:47
่ดก็Œฎ่€…: liuxianzhishou