zoukankan      html  css  js  c++  java
  • 139. Word Break

    package LeetCode_139
    
    /**
     * 139. Word Break
     * https://leetcode.com/problems/word-break/description/
     *
     * Example 1:
    Input: s = "leetcode", wordDict = ["leet", "code"]
    Output: true
    Explanation: Return true because "leetcode" can be segmented as "leet code".
     * */
    class Solution {
        fun wordBreak(s: String, wordDict: List<String>): Boolean {
            //method 1: backtracking, TLE
            //val result = helper(s,wordDict,"")
    
            //method 2: backtracking+memorized, Time complexity: O(2^n), Space complexity:O(n)
            val map = HashMap<String, Boolean>()
            val set = HashSet<Char>()
            //check every latter of s if exist in set first
            for (word in wordDict) {
                for (c in word) {
                    set.add(c)
                }
            }
            for (c in s) {
                if (!set.contains(c)) {
                    return false
                }
            }
            return helper(s, wordDict, "", map)
        }
    
        private fun helper(s: String, wordDict: List<String>, temp: String, map: HashMap<String, Boolean>): Boolean {
            if (map.containsKey(temp)) {
                return map.get(temp)!!
            }
            if (s.length < temp.length) {
                return false
            }
            for (i in 0 until temp.length) {
                if (s[i] != temp[i]) {
                    return false
                }
            }
            if (s.length == temp.length) {
                return true
            }
            for (word in wordDict) {
                if (helper(s, wordDict, temp + word, map)) {
                    map.put(temp, true)
                    return true
                }
            }
            map.put(temp, false)
            return false
        }
    }
  • 相关阅读:
    【linux】驱动-5-驱动框架分层分离&实战
    【linux】驱动-4-LED芯片手册分析
    【MCU】国民N32固件库移植
    【MCU】移植AT32库&FreeRTOS教程
    P3768 简单的数学题
    P4301 [CQOI2013] 新Nim游戏
    P4767 [IOI2000]邮局
    P3211 [HNOI2011]XOR和路径
    FWT 笔记
    P3175 [HAOI2015]按位或(max-min 容斥)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/12634157.html
Copyright © 2011-2022 走看看