
【普及模拟】解压字符串
发布日期:2021-05-07 22:49:32
浏览次数:24
分类:原创文章
本文共 892 字,大约阅读时间需要 2 分钟。
给你一个字符串S,S是已经被加密过的字符串。现在要求你把字符串S还原。字符串S可能会出现这样的格式:k(q),它表示字符串q重复了k次,其中q是0个或多个字符,而k是一个数字,范围是0至9。你只要把k(q)这样的格式全部展开,就能把S还原了,你要输出还原后的字符串的长度。
Input
一行,一个字符串S。字符串S只由‘(’、‘)’、0至9的数字组成,长度不超过50。所有的括号都是能匹配的,不用判断。
Output
一个整数,还原后的字符串的长度。答案不会超过2147483647。
Sample Input
123
Sample Output
3
也是一个模拟,我用了数组。。。
#include<cstring>#include<string>#include<iostream>#include<cstdio>using namespace std;int c,C[10001],pt[10001],L[10001];int main(){ freopen("b.in","r",stdin); freopen("b.out","w",stdout); string s; cin>>s; s="1("+s+")"; for(int i=0;i<s.size();++i){ if(s[i]=='('){ //有左括号的话 pt[c]--; //这一层普通的数-1 c++; //多建一层 C[c]=s[i-1]-48; //这一层该乘的数记录一下 } else if(s[i]==')'){ //有右括号 L[c]=(pt[c]+L[c+1])*C[c]; //这一层的总数目等于(这一层普通的数+这一层里面折叠的数)*这一层该乘的数 pt[c]=0; //归一下0 --c; //退出这层。 } else pt[c]++; //这层普通的数+1 } printf("%d",L[1]); //输出第一层 fclose(stdin); fclose(stdout);}
发表评论
最新留言
表示我来过!
[***.240.166.169]2025年04月14日 02时05分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【MySQL】(九)触发器
2019-03-05
关于Altium Designer 09导出BOM表不能正确分类问题
2019-03-05
Oracle 11G环境配置
2019-03-05
【Python】(十二)IO 文件处理
2019-03-05
【Oozie】(三)Oozie 使用实战教学,带你快速上手!
2019-03-05
师兄面试遇到这条 SQL 数据分析题,差点含泪而归!
2019-03-05
C语言的数值溢出问题(上)
2019-03-05
BottomNavigationView控件item多于3个时文字不显示
2019-03-05
函数指针的典型应用-计算函数的定积分(矩形法思想)
2019-03-05
8051单片机(STC89C52)以定时器中断模式实现两倒计时器异步计时
2019-03-05
用 wxPython 打印你的 App
2019-03-05
vue项目通过vue.config.js配置文件进行proxy反向代理跨域
2019-03-05
Linux下安装MySql过程
2019-03-05
android:使用audiotrack 类播放wav文件
2019-03-05
vue通过better-scroll 封装自定义的下拉刷新组件
2019-03-05
android解决:使用多线程和Handler同步更新UI
2019-03-05
vue自定义封装Loading组件
2019-03-05
Element UI 中动态路由的分析及实现
2019-03-05
使用springMVC配置视图管理器后找不到指定的页面
2019-03-05
关于js中对于Promise的深入理解
2019-03-05