#include
#include
#include
#include
using namespace std;
void getSub(string src,int i,vector &result)
{//取子串方法:将串src中的第i个字符抠掉即为所求的子串
assert(i
if (src.length()<=1)
{
result.push_back(src);
return;
}
src.erase(i,1); //删除从i开始的一个字符
result.push_back(src);
for (int j=0;j
{
getSub(src,j,result);
}
}
/*
* 求一个集合的子集的集合(string)
*/
vector subSet(string src)
{
vector result; //存放结果
result.push_back(src); //把最大子串放入
for (int i=0;i
{
getSub(src,i,result);
}
sort(result.begin(),result.end());
result.erase(unique(result.begin(),result.end()),result.end());
return result;
}
int main()
{
string name="lvj"; //test
vector result=subSet(name);
for(int i=0;i
cout<
return 0;
}