Word Break ,dp

来源:互联网 发布:知无涯者在线 编辑:程序博客网 时间:2024/05/22 12:22

flag[i]记录s[0,...,i]是否可以break, 注意两个for循环里面j==0和flag[0]==true可能同时出现,必须分开

对于j==0,是把0这位包含了的,

flag[0]==true,是从0位的下一位开始考虑

bool wordBreak(string s, unordered_set<string> &dict) {

        if(s.empty()||dict.empty())
            return false;
        int len=s.length();
        bool flag[len];
        memset(flag,false,sizeof(flag));
        
        for(int i=0;i<len;i++)
            for(int j=0;j<=i;j++){
                if(j==0){
                    string str=s.substr(j,i-j+1);
                    if(dict.count(str)){
                        flag[i]=true;
                        break;
                    }
                }
                
                if(flag[j]){
                    string str=s.substr(j+1,i-j);
                     if(dict.count(str)){
                        flag[i]=true;
                        break;
                    }
                }
            }
                
        
        return flag[len-1];

    }



0 0
原创粉丝点击