C++ 生成子串
我试图生成所有子字符串并将其存储在动态分配的字符串数组中,如图所示:C++ 生成子串,c++,algorithm,substring,C++,Algorithm,Substring,我试图生成所有子字符串并将其存储在动态分配的字符串数组中,如图所示: cin>>N; string str; cin>>str; ll m=N*(N+1)/2; string *sub = new string[m]; int k=0; for(int i=1,k=0; i<=N; i++,k++) { for(int j=0; j+i<=N; j++,k++) { sub[k]=s
cin>>N;
string str;
cin>>str;
ll m=N*(N+1)/2;
string *sub = new string[m];
int k=0;
for(int i=1,k=0; i<=N; i++,k++)
{
for(int j=0; j+i<=N; j++,k++)
{
sub[k]=str.substr(j,i);
cout<<sub[k]<<' ';
}
}
cin>>N;
字符串str;
cin>>str;
llm=N*(N+1)/2;
字符串*sub=新字符串[m];
int k=0;
对于(inti=1,k=0;i您对k
的增量太大了:
for(int i=1,k=0; i<=N; i++,k++) // <==
{
for(int j=0; j+i<=N; j++,k++)
{
请避免使用新的std::string并查找std::string::substrstring*sub=new string[m];
=>std::vector sub(m);
Thanx有关帮助,我刚刚开始编写代码,所以我不知道vector,但我会尝试再次了解它
for(int i=1,k=0; i<=N; i++,k++) // <==
{
for(int j=0; j+i<=N; j++,k++)
{
std::vector<std::string> subs;
subs.reserve(m);
for (int i=1; i<=N; ++i) {
for (int j=0; i+j<=N; ++j) {
subs.push_back(str.substr(j, i));
}
}