括号匹配问题,栈

摘要:
编写一个程序来查找不匹配的左括号和右括号,输出原始字符串,并在下一行标记不匹配的括号。“还有空格,”$“和”?“它表示相应的左括号和右括号不能匹配.puts(),输出字符串,并将char数组的最后一位自动换行为0,然后可以使用put进行输出。
题目描述:
    在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.
输入:
    输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100。
    注意:cin.getline(str,100)最多只能输入99个字符!
输出:
    对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。
样例输入:
)(rttyy())sss)(
样例输出:
)(rttyy())sss)( ? ?$
 
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<stack>
using namespace std;
 
 
int main (){
string s;
stack<int> ss;
char ans[101];
 
while (cin>>s){
for (int i=0;i<s.length();i++){
ans[i]=' ';
}//
int i;
for (i=0;s[i]!=0;i++){
if (s[i] == '(')
ss.push(i);
else if (s[i] == ')'){
if (!ss.empty()){
ss.pop();
}
else {
ans[i]='?';
}
}
}
while (!ss.empty()){
ans[ss.top()] = '$';
ss.pop();
}
cout<<s<<endl;
//puts(s);
//ans[i]=0;
for (int i=0;i<s.length();i++)
cout<<ans[i];
//puts(ans);
cout<<endl;
}
return 0;
}
 
最开始WA,因为把ans数组初始化写到了while主循环的外面,第二组测试的ans结果用了上次的。
puts(),输出字符串,并且自动换行
将char数组的最后一位赋予0,就能用puts输出了。

免责声明:文章转载自《括号匹配问题,栈》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pyspark 安装配置【linux &amp;amp;&amp;amp; win】ffmpeg生成视频封面图下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

电子邮件的正则表达式

看似是电子邮件的正则表达式之一w+([- +.]w)*@w+([-.]w+)*.w+([-.]w+)*或者S+@S+.S+都是常用的电子邮件正则表达式RegularExpressionValidator就不用解释了,基础控件,验证输入是否符合[…...] 匹配括号中任何一字符[^…...] 匹配不在括号中的任何一字符w 匹配(a~z,A~Z,0~9)W 匹...

卡特兰数(Catalan数)

首先奉上高中的排列组合公式,防止某些人忘记了 卡特兰数: 规定h(0)=1,而h(1)=1,h(2)=2,h(3)=5,h(4)=14,h(5)=42,h(6)=132,h(7)=C(14,7)-C(14,6)=429,h(8)=1430,h(9)=4862,h(10)=16796,h(11)=58786,h(12)=208012,h(13)=74290...

利用栈实现四则运算表达式求值----先将中缀表达式转换成后缀表达式,然后再求后缀表达式的值

利用栈实现四则运算表达式求值,附Python代码中缀表达式和后缀表达式 平时用到的标准的四则运算表达式就叫做中缀表达式,例如“9 +(3 - 1) * 3 + 10 / 2)”,特点是运算符在数字中间; 后缀表达式就是一种把运算符放在数字后面的形式,“9 3 1 - 3 * + 10 2 / +”即为上例中缀表达式对应的后缀表达式形式,后缀表达式还有一个特...

Java:双括号初始化 /匿名内部类初始化法

偶然见到一种初始化方式,感到十分新奇: //新建一个列表并赋初值A、B、C ArrayList<String> list = new ArrayList<String>() {{ add("A"); add("B"); add("C"); }};...

最长有效括号

给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 "()" 示例 2: 输入: ")()())" 输出: 4 解释: 最长有效括号子串为 "()()" 小编的这道题用的暴力法,之后发现自己太水了,之后看了LeetCode的官方题解链接:https...

ES6中import {} 的括号

es6引用模块import后面加上花括号{}和不加花括号的区别在使用import语法引用模块时,如何正确使用{} 例如:有两个文件,home.js、user.js 当需要在home.js中引入user.js的时候 //home.js import user from './user'; 对于上面的这种引入方法,只有user.js文件中需要提供默认的expo...