problem:
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = "leetcode"
,
dict = ["leet", "code"]
.
Return true because "leetcode"
can
be segmented as "leet code"
.
Hide Tags
thinking:
从s的第一个字母向后匹配,如果i前面的前缀可以匹配,就看s字符串i以后的后缀是否匹配
code:
class Solution{ public: bool wordBreakHelper(string s, unordered_set<string> &dict,set<string> &unmatch) { if(s.length() < 1) return true; bool flag = false; for(int i = 1; i <= s.length(); i++) { string prefixstr = s.substr(0,i); unordered_set<string>::iterator it = dict.find(prefixstr); if(it != dict.end()) { string suffixstr = s.substr(i); set<string>::iterator its = unmatch.find(suffixstr); if(its != unmatch.end())continue; else{ flag = wordBreakHelper(suffixstr,dict,unmatch); if(flag) return true; else unmatch.insert(suffixstr); } } } return false; } bool wordBreak(string s, unordered_set<string> &dict) { int len = s.length(); if(len < 1) return true; set<string> unmatch; return wordBreakHelper(s,dict,unmatch); } };
时间: 2024-10-22 13:11:29