LuoguP7398 [COCI2020-2021#5] Šifra 题解
Content
给定一个长度 \(n\) 的只包含小写字母和 \(0\sim9\) 的字符串(字符串中的字母可视为分隔符)。求字符串中包含多少个不同的数字。
数据范围:\(1\leqslant n\leqslant 100\),保证每个数字最多有 \(3\) 位。
Solution
分两步即可:
- 读入字符串并提取出所有的数字。
- 统计不同的数字个数。
具体看代码实现。
Code
string s;
int num[107], x = -1, cnt, ans, vis[1007];
int main() {
cin >> s; int len = s.size();
F(i, 0, len - 1) {
if(!isdigit(s[i]) && x != -1) num[++cnt] = x, x = -1;
else if(isdigit(s[i])) {
if(x == -1) x = 0;
x = x * 10 + s[i] - '0';
}
}
if(x != -1) num[++cnt] = x;
F(i, 1, cnt) if(!vis[num[i]]) vis[num[i]] = 1, ans++;
return printf("%d", ans), 0;
}