LeetCode139:Word Break
For example, given s = “leetcode”, dict = [“leet”, “code”].
Return true because “leetcode” can be segmented as “leet code”.
동적 기획 문제를 처음 풀 때 이 문제를 열었던 기억이 나는데 그때는 생각이 없었다.현재 동적 기획의 문제가 많이 갱신되었다. 오늘 이 문제를 다시 풀 때 곧 상태와 상태 이동 방정식을 생각해냈기 때문에 말하지 않아도 약간 진보했다.A[i]를 정의하면 0에서 i로 표시된 하위 문자가 dict의 여러 단어로 분할될 수 있는지 여부를 나타냅니다.그러면 A[i]와 A[j], 0<=j 만약에 A[0]가 1이면 s에서 1부터 i까지 표시된 문자가 dict에 있는지 판단한다. 만약에 A[i]를 1로 설정하고 튀어나오지 않으면 두 번째 단계로 들어간다.
실제 코드를 작성할 때 j는 i부터 거꾸로 옮겨다니기 시작하여 옮겨다니는 횟수를 줄일 수 있다.
runtime:4ms
class Solution {
public:
bool wordBreak(string s, unordered_set<string>& wordDict) {
int length=s.size();
int *A=new int[length]();
for(int i=0;i<length;i++)
{
for(int j=i;j>=0;j--)
{
if(j==i)
{
A[i]=isExist(s,0,i,wordDict);
}
else if(A[j]==1)
{
A[i]=isExist(s,j+1,i,wordDict);
}
if(A[i]==1)
break;
}
}
return A[length-1]==1;
}
int isExist(string &s,int first,int last,unordered_set<string> &wordDict)
{
string str=s.substr(first,last-first+1);
if(wordDict.count(str))
return 1;
else
return 0;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.