2015网易游戏笔试第2题(求出压缩的字符串展开后的个
2015-09-17 21:47
369 查看
#include<iostream> #include<string> #include<vector> #include<iterator> #include<stack> using namespace std; int find_num(string &s,int &i); int main() { int number=0; cin>>number; vector<string>s_list(number); for(int i=0;i<number;i++) { cin>>s_list[i]; } for(int i=0;i<number;i++) { stack<char>sta; stack<int>sta1; int ch_size=0; int mul=0; string s=s_list[i]; for(int i=0;i<s.size();i++) { if(s[i]=='(') { sta.push(s[i]); } else if(s[i]>='A'&&s[i]<='Z') { if(i==0) sta1.push(1); else if(s[i-1]>='A'&&s[i-1]<='Z') { ch_size=sta1.top(); sta1.pop(); ch_size++; sta1.push(ch_size); } else if(s[i-1]>='0'&&s[i-1]<='9') { ch_size=sta1.top(); sta1.pop(); ch_size++; sta1.push(ch_size); } else { sta1.push(1); } } else if(s[i]==')') { sta.pop(); ch_size=sta1.top(); i++; mul=find_num(s,i); ch_size=ch_size*mul; sta1.pop(); sta1.push(ch_size); } else if(s[i]>='0'&&s[i]<='9') { ch_size=sta1.top(); mul=find_num(s,i); sta1.pop(); sta1.push(mul+ch_size-1); } } cout<<sta1.top()<<endl; } } int find_num(string &s,int &i) { int num=0; while(1) { num=num*10+s[i]-'0'; if(s[i+1]>='0'&&s[i+1]<='9') i++; else break; } return num; }
相关文章推荐
- mysql解压版安装与使用-2015-09-17
- Linux(cent OS)下rpm包管理-yum在线管理-光盘源
- 用户登录界面.cs
- Raspberry Pi GPIO Protection
- javascript UI lib
- 四个作用域
- 总结一下java的那些基础运算符
- java自学日记
- 【一图解读】日本新安保法案一旦通过,将意味着什么?
- 实习
- git commit提示Strange error in gitlab: fatal: protocol error: bad line length character: Depl
- 基于Socket的局域网简易聊天室
- 用markdown.js解析markdown时,设置图片大小
- Linux 编程学习笔记----文档管理系统
- 初识modbus
- Bmob 提取图片(网络图片)
- 在java 中一种简单方式的声明静态Map常量的方法
- python os模块常用方法 (五)
- 黑马程序员-----第一课Java概述
- 安畅亚太节点即将上线,战略布局海外市场