这句话是什么意思?半 += 字符串(频率[i] / 2, i + 'a');



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] / 2char ci + 'a'

并且当您这样做时,该字符串对象将连接到对象half

half += string(freq[i] / 2, i + 'a'); 

最新更新