首先是打印一个字母的情况
//一个字母
for (int i = 0; i < s.size(); ++i)
{
cout << s[i] << endl;
}
打印两个
//两个字母
for (int i = 0; i < s.size(); ++i)
{
string w = "";
w += s[i];
int count = 1;
for (int j = i + 1; j < s.size(); ++j)
{
w += s[j];
count++;
if (count == 2)
{
cout << w << endl;
count = 1;
w = s[i];
}
}
}
接着是打印三个
//三个字母
for (int i = 0; i < s.size(); ++i)
{
string w = "";
w += s[i];
int count = 1;
for (int j = i + 1; j < s.size(); ++j)
{
w += s[j];
count++;
if (count == 3)
{
cout << w << endl;
count = 1;
w = s[i];
}
}
}
最终归纳出答案
将一个字符的情况特殊对待,其他情况给一个通用的代码。
void func2(string s)
{
//归纳出答案
for (int i = 0; i < s.size(); ++i)
{
cout << s[i] << endl;
}
for (int x = 2; x <= s.size(); ++x)
{
for (int i = 0; i < s.size(); ++i)
{
string w = "";
w += s[i];
int count = 1;
for (int j = i + 1; j < s.size(); ++j)
{
w += s[j];
count++;
if (count == x)
{
cout << w << endl;
count = 1;
w = s[i];
}
}
}
}
}
进行调用
int main()
{
string s = "abcd";
func2(s);
return 0;
}
结果: