http://www.geeksforgeeks.org/print-all-palindrome-permutations-of-a-string/
这句话是什么意思
half += string(freq[i] / 2, i + 'a');
在此代码中?
void printAllPossiblePalindromes(string str)
{
int freq[M];
if (!isPalin(str, freq))
return;
int l = str.length();
string half = "";
char oddC;
for (int i = 0; i < M; i++)
{
if(freq[i] % 2 == 1)
oddC = i + 'a';
half += string(freq[i] / 2, i + 'a');
}
string palin;
do
{
palin = half;
if (l % 2 == 1)
palin += oddC;
palin += reverse(half);
cout << palin << endl;
}
while (next_permutation(half.begin(), half.end()));
}
string(freq[i] / 2, i + 'a');
来自
string (size_t n, char c);
这是填充构造函数:
用字符 c 的 n 个连续副本填充字符串。
所以你正在创建一个字符串类的本体
size_t n
替换为:freq[i] / 2
,char c
为i + 'a'
并且当您这样做时,该字符串对象将连接到对象half
:
half += string(freq[i] / 2, i + 'a');