У меня проблема с WordBreak II на leetcode.мой вопрос следующий Учитывая непустую строку s и словарь wordDict, содержащий список непустых слов, добавьте пробелы в s, чтобы создать предложение, где каждое слово является допустимым словарным словом.Возвратите все такие возможные предложения.
Я закодировал это следующим образом.
class Solution {
public:
vector<string> wordBreak(string s, vector<string>& wordDict) {
unordered_set<string> st;
vector<string> res;
stack<string> ans;
for(auto i : wordDict)
{
st.insert(i);
}
backtrack(s,st,res,ans);
return res;
}
void backtrack(string str,unordered_set<string> &st,vector<string>
&res,stack<string>& ans)
{ if(str.length()==0){
string xxx="";
xxx+=ans.top();
ans.pop();
while(!ans.empty())
{
xxx=ans.top()+" "+xxx;
ans.pop();
}
res.push_back(xxx);
return;
}
for(int i=1;i<=str.length();i++)
{
string prefix=str.substr(0,i);
if(st.find(prefix)!=st.end())
{ ans.push(prefix);
backtrack(str.substr(i,str.length()-i),st,res,ans);
ans.pop();
}
}
}
};
, но когда я запускаю эту программу, я получаю этот тип ошибки,
Line 129: Char 22: runtime error: member call on misaligned address
0xbebebebebebec09e for type 'struct basic_string', which requires 8 byte
alignment (new_allocator.h)
0xbebebebebebec09e: note: pointer points here
iНе знаю, где я не прав, пожалуйста, помогите.
Я просто использую отслеживание.пожалуйста, скажите мне, где я не прав.