3.扩号匹配问题在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注.时间限制:3000内存限制:65536输入输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100输出对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$","?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。样例输入```((ABCD(x))(rttyy())sss)(```样例输出```((ABCD(x)$$)(rttyy())sss)(? ?$```
【喵呜刷题小喵解析】:这个问题是一个经典的括号匹配问题,可以通过使用栈来解决。首先,我们定义一个空栈。然后,我们遍历输入的字符串。对于每个字符,如果它是左括号,我们就把它推入栈中。如果它是右括号,我们就检查栈是否为空。如果栈不为空,我们就从栈中弹出一个元素,表示找到了一个匹配的括号。如果栈为空,我们就找到了一个无法匹配的右括号,返回原始字符串和标记后的字符串。如果遍历完字符串后栈中还有元素,那就表示还有未匹配的左括号,返回原始字符串和全是空格的标记字符串。最后,如果没有未匹配的括号,就返回空字符串和全是"$"的标记字符串。在找到无法匹配的括号后,我们用"$"和"?"来标记它们,并输出原始字符串和标记后的字符串。在输入部分,我们使用了一个无限循环来读取输入,直到读到空字符串为止。这样可以处理多组输入数据。