AT_tenka1_2015_qualB_b 题解

洛谷链接&Atcoder 链接

本篇题解为此题较简单做法较少码量,并且码风优良,请放心阅读。

1|0题目简述

给定一个集合形式,判断此集合是 dict 还是 set

2|0思路

简单的模拟题

首先需要特判 {} 的情况,应直接输出 dict

接着观察两个集合的特征,很容易即可发现 dictset 的最明显的区别就是一个有 : 一个没有,而我们需要注意 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; }

提交记录

The End!


__EOF__

本文作者So_noSlack
本文链接https://www.cnblogs.com/So-noSlack/p/17587521.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   So_noSlack  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示