代码改变世界

leetcode - Word Break

2013-10-13 10:59  张汉生  阅读(139)  评论(0编辑  收藏  举报

题目描述:点击此处

class Solution {
public:
    int * flag;
    bool wordBreak(string &s, int index, unordered_set<string> &dict){
        if (flag[index]==-1)
            return false;
        int len = s.length()-index;
        if (len==0)
            return true;
        string header;
        bool ans = false;
        for (int i=index; i<s.length(); i++){
            header = header+s.at(i);
            if (dict.find(header)!=dict.end())
                if (wordBreak(s, i+1, dict)){
                    ans = true;
                    break;
                }
        }
        if (ans == false)
            flag[index] = -1;
        return ans;
    }
    bool wordBreak(string s, unordered_set<string> &dict) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        flag = new int[s.length()+1];
        for (int i=0; i<s.length()+1; i++)
            flag[i] = 0;
        bool ans = wordBreak(s,0,dict);
        delete []flag;
        return ans;
    }
};