Word Break
DP
bool wordBreak(string s, unordered_set<string> &dict) {
// Note: The Solution object is instantiated only once and is reused by each test case.
//dp
if(dict.find(s)!=dict.end())
return true;
int n = s.size();
vector<vector<bool>> dp(n,vector<bool>(n,false));
int i,j,k;
for(i=n-1;i>=0;i--)
{
if(dict.find(s.substr(i,1))!=dict.end())
dp[i][i] = true;
for(j=i+1;j<n;j++)
{
if(dict.find(s.substr(i,j-i+1))!=dict.end())
{
dp[i][j] = true;
}else
{
for(k=i;k<j;k++)
{
if(dp[i][k]&&dp[k+1][j])
{
dp[i][j] = true;
break;
}
}
}
}
}
return dp[0][n-1];
}
浙公网安备 33010602011771号