首页 > 代码库 > Word Break II
Word Break II
1 class Solution { 2 vector< vector<int> > pos; 3 vector<string> sen; 4 public: 5 6 vector<string> wordBreak(string s, unordered_set<string> &dict) { 7 getVector(s,dict); 8 string tmp=""; 9 getSentence(s,pos,tmp,0);10 return sen;11 }12 void getSentence(string s,vector<vector<int> > &pos,string tmp,int start)13 {14 15 for(int i=0;i<pos[start].size();i++)16 if(!pos[start].empty())17 {//cout<<tmp<<endl;18 if(pos[start][i]!=s.size())19 {20 21 getSentence(s,pos,tmp + s.substr(start,pos[start][i]-start) + " ",pos[start][i]);22 }23 else24 {25 sen.push_back(tmp+s.substr(start,pos[start][i]-start));26 27 }28 }29 30 31 32 }33 void getVector(string s, unordered_set<string> &dict)34 {35 36 int setLen = s.size();37 int start =0;38 pos.resize(setLen);39 for(int i=setLen-1;i>=0;i--)40 {41 if(dict.count(s.substr(i,setLen-i)))42 pos[i].push_back(setLen);43 44 }45 for(int j=setLen-1;j>=0;j--)46 {47 start = 0;48 if(!pos[j].empty())49 for(int k = j;k >0;k--)50 {51 if(dict.count(s.substr(start,j-start)))52 pos[start].push_back(j);53 start++;54 }55 }56 57 58 59 }60 61 };
Word Break II
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。