【发布时间】:2015-05-27 12:03:07
【问题描述】:
我需要用 C++ 实现一个函数,
vector<string> generateSubstrings(string s),
返回一个字符串的所有子字符串的向量。例如,字符串“rum”的子字符串是七个字符串
“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”子字符串还是应该只有其中一个?
标签: c++ string recursion vector substring