AT_tenka1_2015_qualB_b 题解
本篇题解为此题较简单做法及较少码量,并且码风优良,请放心阅读。
题目简述
给定一个集合形式,判断此集合是 dict
还是 set
。
思路
简单的模拟题。
首先需要特判 {}
的情况,应直接输出 dict
。
接着观察两个集合的特征,很容易即可发现 dict
和 set
的最明显的区别就是一个有 :
一个没有,而我们需要注意 expr
可是任何集合或者数字,所以有可能出现 {1,{2:3}}
的情况,而这种情况就不能直接看有无冒号进行判断了。
我们需要用 \(num\) 来记录当前是第几层括号,如果在第一层括号中发现了冒号,那么这个集合就是 dict
了,反之就是 set
。
经过以上分析,很容易即可写出代码了:
#include<iostream>
using namespace std;
string str;
int main() {
cin >> str;
// 特判 {} 的情况
if(str.length() == 2) {
cout << "dict\n";
return 0;
}
int num = 0; // num 记录层数
for(int i = 0; i <= str.length(); i ++) {
if(str[i] == '{') num ++; // 遇到 { 层数加 1
if(str[i] == '}') num --; // 遇到 } 层数减 1
if(str[i] == ':' && num == 1) {
cout << "dict\n"; // 最外层遇到 :
return 0;
}
}
cout << "set\n"; // 换行好习惯
return 0;
}
\[\text{The End!}
\]
本文来自博客园,作者:So_noSlack,转载请注明原文链接:https://www.cnblogs.com/So-noSlack/p/17587521.html