题目要求统计不同字符的个数,那么用数组或者set等数据结构维护一下,已记录该字符就跳过,否则记录即可。我们这里玩点新玩意,用bitset维护一下。
#include <bits/stdc++.h> using namespace std; void solve() { string s; cin >> s; // 按题意,均为ASCII在128以下的字符,那么我们开一个大于128的bitset就可以维护 bitset<130> st; for (char c : s) { // 把对应二进制位设为1,重复的二进制位不会重复计算 st.set(c); } // 输出被设为1的二进制位的个数,恰好对应不同字符的个数 cout << st.count() << "\n"; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); solve(); return 0; }