from Word Break to substr function note

https://oj.leetcode.com/problems/word-break/
这道题目不是重点,重点是用string::substr的一点体会。
substr(size_t pos, size_t len=string::npos)

这个是substr的document,默认第二个参数npos表示取到字符串源串最后面,而且特别注意都是size_t类型,
我有一次掉到坑里去了,第二个参数一定要是>=0的,如果负数就会返回整个源串,要特别注意,另外pos也是>=0,这个倒好理解。
而且这个比较好,只有一种参数列表,这样比较容易记忆使用,当然如果参数列表多,用多了一般也是用自己比较熟悉的那一种。

代码是错的,有些case不行,可能需要回溯,类似dfs这种

bool wordBreak(string s, unordered_set<string> &dict) {
        if(s=="") return false;
        while(1)
        {
            if(s=="")
                return true;
            bool found=false;
            int startpos;
            string substr1,substr2;
            for(unordered_set<string>::iterator it=dict.begin();it!=dict.end();it++)
            {
                if((startpos=s.find(*it))!=string::npos)
                {
                    found=true;
                    if(startpos-1>=0)
                        substr1=s.substr(0,startpos);
                    else
                        substr1="";

                    string substr2=s.substr(startpos+(*it).size(),s.size()-(startpos+(*it).size()));
                    s=substr1+substr2;
                }
            }
            if(found==false) return false;
        }
    }

Posted by richard爱闹 - 7月 19 2014
如需转载,请注明: 本文来自 Richard