请教一个问题:字符串abadcafg,我想取出里面所有的组合放到数组里,最小是两个,请问咋实现呢?结果就是:ab,aba,abad,abadc,abadca,abadcaf,abadcafg,ba,bad,badc,badca,badcaf,badcafg,以此类推
string[] txt = new string[100];
for(int i = 1; i < firstStr.Length; i++)
{
txt[i-1] = firstStr.Substring(0, i+1);
}
这是我的代码,但只能实现ab,aba,abad,abadc,abadca,abadcaf,abadcafg这些,后面的无法实现了。不知道怎么改
#include
#include
using namespace std;
void Combination(char* string, int number, vector& result)
{
if(number == 0)
{
vector::iterator iter = result.begin();
for(; iter < result.end(); ++ iter)
printf("%c", *iter);
printf("\n");
return;
}
if(*string == '\0')
return;
result.push_back(*string);
Combination(string + 1, number - 1, result);
result.pop_back();
Combination(string + 1, number, result);
}
void combination(char* string)
{
if(string == NULL)
return;
int length = strlen(string);
vector result;
for(int i = 1; i <= length; ++ i)
{
Combination(string, i, result);
}
}
int main()
{
char *str ="abcd";
combination(str);
getchar();
return 0;
}
String firstStr = "abadcafg";
String[] txt = new String[100];
int x = 0;
for (int j = 0; j < firstStr.length(); j++) {
for (int i = 1; i < firstStr.length() - j; i++) {
txt[x++] = firstStr.substring(j, j + i + 1);
}
}
至于txt打印出来后面有n多的null你就自己去解决吧
嵌套循环就好了,按照楼上的方法就好了,不过不建议使用 new String[100],固定长度,万一超过了咋办?建议使用list集合完成,最后list.toArray()拿到数组。