1class Solution {2Map<String, Boolean> map = new HashMap<>();34public boolean wordBreak(String s, List<String> wordDict) {56if (wordDict.contains(s)) {7return true;8}9if (map.containsKey(s)) {10return map.get(s);11}12for (int i = 0; i < s.length(); ++i) {13String left = s.substring(0, i);14if (wordDict.contains(left) && wordBreak(s.substring(i), wordDict)) {15map.put(s, true);16return true;17}18}19map.put(s, false);20return false;21}22}