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;
}
posted @ 2021-12-16 14:15  Eason_AC  阅读(88)  评论(0)    收藏  举报