분사 문제 분석
문자열이 필드의 단어로 분할될 수 있는지를 판단하는 문자열과 사전을 지정합니다.예를 들어 필드는 {hello,world}이고 문자열은 hellohelloworld이며 hello,hello,world로 나눌 수 있습니다. 모두 사전의 단어입니다.
사상: 가장 직접적인 사고방식은 귀착이다. 우리는 모든 접두사를 고려하는데 사전에 있습니까?있으면 나머지 문자열을 차례로 처리합니다.더 이상 없으면 다음 접두사를 고려하십시오.표현식으로 쓰면 fun(i)=substr(i, j-i+1) & fun(j+1), 그 중에서 i<=j
bool 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];
}
이상은 개인의 생각만을 대표합니다. 문제가 있으면 지적해 주십시오. 감사합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.