C++ 这条线是什么意思?一半+;=字符串(freq[i]/2,i+;';a';);
这条线是什么意思C++ 这条线是什么意思?一半+;=字符串(freq[i]/2,i+;';a';);,c++,C++,这条线是什么意思 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;
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()));
}
void printAllPossiblePalindromes(字符串str)
{
整数频率[M];
如果(!isPalin(str,freq))
返回;
int l=str.length();
字符串半=”;
char-oddC;
for(int i=0;i
string (size_t n, char c);
哪个是填充构造函数:
用字符c的n个连续副本填充字符串
因此,您正在使用创建string类的onInstance
size\u t n
替换为:freq[i]/2
和char c
与i+'a'
当您执行以下操作时,该字符串对象将连接到对象half
:
half += string(freq[i] / 2, i + 'a');
为了清楚起见,我刚刚编辑了您答案的措辞。如果您不同意,请回滚。I+'a'
正在尝试将一个小整数添加到'a'以获得另一个字符。人们的期望可能是,'a'+25=='z'
-标准不能保证这一点,而今天的一些机器也不允许这样做。(该标准确实保证“0”到“9”的等效技巧有效。)
half += string(freq[i] / 2, i + 'a');