扩号匹配问题
来源:互联网 发布:百度域名续费价格 编辑:程序博客网 时间:2024/06/11 09:56
【描述】
在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算术式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注。
【输入】
输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串长度不超过100。
【输出】
对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$"、"?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。
【输入示例】
((ABCD(x)
)(rttyy())sss)(
【输出示例】
((ABCD(x)
$$
)(rttyy())sss)(
? ?$
【C代码】
---------------
#include<stdio.h>
#include<string.h>
#defineSTACK_SIZE 100
intmain(void) {
struct Bracket {
char ch; /*字符 */
int index; /*字符在字符串中的下标 */
};
struct Bracketstack[STACK_SIZE]; /*栈 */
char str[STACK_SIZE];
int i, len;
inttop; /*栈顶 */
while(scanf("%s", str) != EOF) {
printf("%s\n",str); /*输出原始输入字符串 */
len = strlen(str);
top = 0;
for(i = 0; i < len; ++i) {
if(str[i] == '('){ /*左括号直接进栈 */
stack[top].ch = str[i];
stack[top].index = i;
++top;
}
else if(str[i] == ')') {
if(top == 0){ /*栈空,右括号入栈 */
stack[top].ch = str[i];
stack[top].index = i;
++top;
}
else {
if(stack[top - 1].ch =='(') /*若栈顶元素是左括号,则出栈 */
--top;
else{ /*右括号入栈 */
stack[top].ch = str[i];
stack[top].index = i;
++top;
}
}
}
}
/*将栈的每一个元素的index值所指向的str数组的下标对应的元素设置为$或?*/
for(i = 0; i < top; ++i) {
if(stack[i].ch == '(')
str[stack[i].index] ='$'; /*不能匹配的左括号 */
else
str[stack[i].index] ='?'; /*不能匹配的右括号 */
}
/*扫描str数组,假如不是$或?,则输出空格,否则输出对应元素的值 */
for(i = 0; i < len; ++i) {
if(str[i] != '$' && str[i] != '?')
printf(""); /*输出空格 */
else
printf("%c", str[i]);
}
printf("\n");
}
return 0;
}
- 扩号匹配问题
- 扩号匹配问题
- 2705:扩号匹配问题
- poj 3704:扩号匹配问题
- OpenJudge 2705:扩号匹配问题
- 编程题#4:扩号匹配问题
- 扩号匹配
- 扩号匹配问题(C程序设计进阶第3周)
- 递归习题—扩号匹配问题(C程序设计进阶 第3周)
- 2705:扩号匹配问题(2.2基本算法之递归和自调用函数)
- Coursera pku C程序进阶 编程题#4:扩号匹配问题
- 字符串查找匹配问题
- 字符串匹配问题
- 中文字符串匹配问题
- 字符串匹配问题
- 最大字串匹配问题
- 字符串匹配问题
- 二部图匹配问题
- 第十三周项目4——数组的排序(字符的比较)
- Sicily 1211 商人的宣传
- PHP浮点数的一个常见问题的解答
- poj3292 Semi-prime H-numbers
- 第14周项目2-从文件读取成绩并处理
- 扩号匹配问题
- 关于OpenGL入门中地球,月亮,太阳运动模拟无法显示的问题(只显示黑框)
- MFC的CListCtrl改造给虚拟列表使用
- 第14周项目3-多科成绩输出最高、最低、平均成绩
- 《网络协议》TCP 协议
- 关于填写信息形式的通用cell的思考
- 第14周项目3-增加保存姓名的数组输出最高成绩的名单
- android官方技术文档翻译——Android Lint
- IOS界面UI设计8之主界面加载以及键盘