刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

3.扩号匹配问题
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.
时间限制:3000
内存限制:65536
输入
输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100
输出
对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。
样例输入
```
((ABCD(x)
)(rttyy())sss)(
```
样例输出
```
((ABCD(x)
$$
)(rttyy())sss)(
? ?$
```

使用微信搜索喵呜刷题,轻松应对考试!

答案:

解析:

【喵呜刷题小喵解析】:这个问题是一个经典的括号匹配问题,可以通过使用栈来解决。首先,我们定义一个空栈。然后,我们遍历输入的字符串。对于每个字符,如果它是左括号,我们就把它推入栈中。如果它是右括号,我们就检查栈是否为空。如果栈不为空,我们就从栈中弹出一个元素,表示找到了一个匹配的括号。如果栈为空,我们就找到了一个无法匹配的右括号,返回原始字符串和标记后的字符串。如果遍历完字符串后栈中还有元素,那就表示还有未匹配的左括号,返回原始字符串和全是空格的标记字符串。最后,如果没有未匹配的括号,就返回空字符串和全是"$"的标记字符串。在找到无法匹配的括号后,我们用"$"和"?"来标记它们,并输出原始字符串和标记后的字符串。在输入部分,我们使用了一个无限循环来读取输入,直到读到空字符串为止。这样可以处理多组输入数据。
创作类型:
原创

本文链接:3.扩号匹配问题在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share