мне нужно реализовать функцию в C++,рекурсивная функция, которая возвращает все подстроки строки
vector<string> generateSubstrings(string s),
, которая возвращает вектор всех подстрок строки. Например, подстроками строки «ром» являются семь строк
«r», «ru», «rum», «u», «um», «m», «».
Функция должна быть рекурсивной и должна возвращать результаты в виде вектора.
Вот мой код. Это только печать «r», «ru» и «rm». У меня много проблем с выполнением этой функции. Я работаю над этим в течение последних нескольких часов, но я просто не могу понять, как заставить его работать, как указано, поэтому любая помощь будет оценена по достоинству.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> generateSubstrings(string s, int num){
int index = num;
int SIZE = s.size();
vector<string> substrings;
if(index == s.size()){//BASE CASE
string temp = s.substr(index,1);
substrings.push_back(temp);
}
else{
for(int i = 0; i < SIZE; ++i){
string temp = s.at(index) + s.substr(i,i);
substrings.push_back(temp);
}
generateSubstrings(s, num + 1);
}
return substrings;
}
int main() {
vector<string> vec(20);
vec = generateSubstrings("rum", 0);
cout << endl << endl;cout << "PRINTING VECTOR" << endl;
for (int i = 0; i<vec.size();++i){
cout << vec.at(i);
cout << endl;
}
cout << "DONE";
}
Какие подстроки «Rumm»? Имеет ли она две подстроки «m» или должна иметь только одну из них? – juhist