분사 문제 분석

1385 단어
제목 출처, 대자규중, 오리지널@진리인, 위챗 공식 계정'대자규중'에 계속 관심을 가져주시기 바랍니다.
문자열이 필드의 단어로 분할될 수 있는지를 판단하는 문자열과 사전을 지정합니다.예를 들어 필드는 {hello,world}이고 문자열은 hellohelloworld이며 hello,hello,world로 나눌 수 있습니다. 모두 사전의 단어입니다.
사상: 가장 직접적인 사고방식은 귀착이다. 우리는 모든 접두사를 고려하는데 사전에 있습니까?있으면 나머지 문자열을 차례로 처리합니다.더 이상 없으면 다음 접두사를 고려하십시오.표현식으로 쓰면 fun(i)=substr(i, j-i+1) & fun(j+1), 그 중에서 i<=jbool dictionaryContain(const set<string>& strset,const string& str) { set<string>::iterator iter = strset.find(str); if(iter != strset.end())return true; else return false; } bool wordBreak(const string& str,const set<string>& strset) { int length = str.size(); bool* dp = new bool[length+1]; memset(dp,0,sizeof(bool)*(length+1)); dp[length] = true; int i,j; for(i=length-1;i>=0;i--)// dp { for(j=i;j<=length;j++) { if(dictionaryContain(strset,str.substr(i,j-i+1)) && dp[j+1])// { dp[i] = true; break; } } } return dp[0]; }
이상은 개인의 생각만을 대표합니다. 문제가 있으면 지적해 주십시오. 감사합니다.

좋은 웹페이지 즐겨찾기