【发布时间】:2021-04-22 20:20:54
【问题描述】:
chk[c - 'A'] = true;
这在 C++ 中是什么意思? 我试图解决回文重排序,但我无法理解这部分。
这里是完整的代码:
int cnt = 0;
bool chk[26];
string s, ans = "";
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cin >> s;
for (char& c : s) {
if (!chk[c - 'A']) {
chk[c - 'A'] = true;
cnt++;
}
else {
ans += c;
chk[c - 'A'] = false;
cnt--;
}
}
if (cnt >= 2) {
cout << "NO SOLUTION" << endl;
return 0;
}
cout << ans;
for (char c = 'A'; c <= 'Z'; c++) {
if (chk[c - 'A']) {
cout << c;
}
}
reverse(ans.begin(), ans.end());
cout << ans;
return 0;
}
【问题讨论】:
-
我试图解决回文重排序问题 -- 所以你使用 C++ 语言来解决这个问题,但不知道你使用的计算机语言的基础知识?
-
chk似乎是一个数组或一些布尔值容器,其中 chk[0] 表示字符A。 -
如果您从这些在线编码竞赛网站之一收到有关“回文重排序”的问题,请注意,这些网站上提出的问题假定您知道您将使用的计算机语言。这些网站不能替代学习 C++。
-
这是一个赋值表达式。
-
大概,
c是一个整数。当您从中减去'A'时,实际上是从c中减去 65(65 是A的 ASCII 码)。然后,您使用这个结果整数来索引大概是数组chk,并在数组中的该位置分配值true。