栈的应用,需要注意括号前可能没有数字的情况。

 #include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <stack>
#include <string>
using namespace std; #define MAXN 300
#define isdigit(c) (c>='0' && c<='9')
#define islower(c) (c>='a' && c<='z')
char str[MAXN]; void solve() {
string ans = "";
stack<char> ops;
stack<int> cnts;
stack<string> strs;
int cnt;
int i = ; while (str[i]) {
bool found = false;
cnt = ;
while (isdigit(str[i])) {
cnt = *cnt + str[i]-'';
++i;
found = true;
}
if (str[i] == '(') {
if (!found)
cnt = ;
ops.push('(');
cnts.push(cnt);
strs.push(ans);
ans = "";
} else if (str[i] == ')') {
cnt = cnts.top();
cnts.pop();
ops.pop();
int r = cnt;
string bk = ans;
ans = strs.top();
strs.pop();
while (r) {
if (r & )
ans += bk;
bk += bk;
r >>= ;
}
} else {
if (found) {
string bk(cnt, str[i]);
ans += bk;
} else {
ans += str[i];
}
}
++i;
} cout <<ans<<endl;
} int main() {
int t;
#ifndef ONLINE_JUDGE
freopen("data.in", "r", stdin);
freopen("data.out", "w", stdout);
#endif
scanf("%d", &t);
while (t--) {
scanf("%s", str);
solve();
} return ;
}

【HDOJ】1274 展开字符串的更多相关文章

  1. HDU 1274 展开字符串 (递归+string类)

    题目链接:HDU 1274 展开字符串 中文题. 左括号进入DFS函数,右括号return到上一层. 注意return回去的是这个一层递归中的括号中的字母串. AC代码: #include<st ...

  2. (DFS)展开字符串 -- hdu -- 1274

    http://acm.hdu.edu.cn/showproblem.php?pid=1274 展开字符串 Time Limit: 2000/1000 MS (Java/Others)    Memor ...

  3. 展开字符串(dfs)

    展开字符串 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  4. 1267: 展开字符串(Java)

    WUSTOJ 1267: 展开字符串 参考 jamesMusk的博客--Java 判断字符是大写小写或者数字 Description   给三个参数a1,a2,a3和一个字符串,请按以下要求展开该字符 ...

  5. Luogu 1098 - 字符串的展开 - [字符串操作][模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1098 题目描述在初赛普及组的“阅读程序写结果”的问题中,我们曾给出一个字符串展开的例子:如果在输入的字符串中 ...

  6. HDU-1274 展开字符串

    Problem Description 在纺织CAD系统开发过程中,经常会遇到纱线排列的问题.该问题的描述是这样的:常用纱线的品种一般不会超过25种,所以分别可以用小写字母表示不同的纱线,例如:abc ...

  7. python全栈开发-Day3 字符串

    python全栈开发-Day3 字符串 一.按照以下几个点展开字符串的学习  #一:基本使用 1. 用途 #首先字符串主要作用途径:名字,性别,国籍,地址等描述信息2.定义方式 在单引号\双引号\三引 ...

  8. string黑科技

    1. string对象的定义和初始化以及读写 string s1; 默认构造函数,s1为空串string s2(s1); 将s2初始化为s1的一个副本string s3("valuee&qu ...

  9. 2178 表达式运算Cuties

    2178 表达式运算Cuties  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 大师 Master 题解       题目描述 Description 给出一个表达式,其中运算 ...

随机推荐

  1. UVa 108: Maximum Sum

    这道题用暴力解法+动态规划.分析如下: 对于某个1*m的矩阵,即一个数列,求其maximal sub-rectangle,可以通过求最大长连续字串和来求得(这个用到了动态规划). 那么对于n*m的矩阵 ...

  2. Android给ListView设置分割线Divider样式

    给ListView设置分割线,只需设置如下两个属性: android:divider="#000" //设置分割线显示颜色 android:dividerHeight=" ...

  3. [译]C++如何切分字符串

    声明: 翻译仅以技术学习和交流为目的,如需转载请务必标明原帖链接. http://stackoverflow.com/questions/236129/how-to-split-a-string-in ...

  4. App 启动加载广告页面思路

    需求 很多app(如淘宝.美团等)在启动图加载完毕后,还会显示几秒的广告,一般都有个跳过按钮可以跳过这个广告,有的app在点击广告页之后还会进入一个广告页面,点击返回进入首页.今天我们就来开发一个广告 ...

  5. maya和Unity中的坐标系旋转

    maya软件是用的右手坐标系,默认旋转顺序是ZYX,即先绕Z轴旋转,再绕Y轴旋转,最后绕X轴旋转. 比如在maya软件中,右侧的旋转顺序是可选的,默认的选择是“XYZ”,其实物体旋转顺序是倒着念,即上 ...

  6. Ext4 简单的treepanel

    转载:http://blog.csdn.net/zyujie/article/details/8208499 最近在学习Ext4,记录一些有关Ext4实现控件的方法: Ext4的treePanel和之 ...

  7. Linux 网络配置(固定IP)

    通常linux作为服务器系统时,是不推荐安装图形界面的,因此我们需要掌握非图形界面下如何配置网络,主要两种方式,如下: 一.使用SETUP工具(redhat系列才可以,推荐此修改方式) 1.在命令行直 ...

  8. 关于Core Data的一些整理(四)

    关于Core Data的一些整理(四) 调用Core Data文件中的Request模板进行条件匹配 //获取ObjectModel相当于获取Core Date文件 NSManagedObjectMo ...

  9. Xcode7设置生成DSYM出现大量警告

    看图,设置成这样就会出现大量的警告,解决方法如下: 将debug information format 更改为:DWARF即可

  10. ubuntu下安装Vmare Workstation,并安装mac补丁

    最近想学习一下关于ios方面的开发,但是苦于自己的电脑已经装了两个系统:一个win7,一个ubuntu.两系统均装在物理硬盘上,不想格盘,所以装个虚拟机玩玩.决定使用Vmare Workstation ...