Thursday, January 15, 2015

[LeetCode]Word Break


boolean数组arr记录前k个字母是否在字典里,每次扫第i位时候,把arr从i到0扫一遍,看前j个和从j到i组成的substring是不是在字典里,有一组在的话说明前i + 1个可以break,没有的话就说明不行,时间复杂度O(N^2)。用f[i]代表能不能break,DP方程:

  • f[i] = (f[i] && dict.contains(s.substring(i, i + 1))) || (f[i - 1] && dict.contains(s.substring(i - 1, i + 1))) ||......|| (f[0] && dict.contains(s.substring(0, i + 1)))
代码如下:

No comments:

Post a Comment