1class Solution {2public:3bool wordBreak(string s, vector<string> &wordDict) {4int m = wordDict.size();5int n = s.size();6vector<int> dp(n + 1, 0);7dp[0] = 1;8for (int i = 1; i <= n; i++) {9for (int j = 0; j < m; j++) {10if (i >= wordDict[j].size()) {11for (int k = 0; k < wordDict[j].size(); k++) {12if (s[i - wordDict[j].size() + k] != wordDict[j][k]) goto cnt;13}14if (dp[i - wordDict[j].size()] == 1) dp[i] = 1;15if (dp[n] == 1) return true;16cnt:;17}18}19}20return dp[n];21}22};