Rita li

You give me a future, I love you the whole once

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
#include<stdio.h>
#include<stack>
using namespace std;
stack <int> s;//定义一个堆栈
char str[101];//保存输入字符串
char ans[101];//保存输出字符串
int main()
{
    while(scanf("%s",str)!=EOF)//输入字符串
    {
        int i;
        for(i=0;str[i]!=0;i++)//从左到右遍历字符串
        {
            if(str[i]=='(')//若遇到(
            {
                s.push (i);///将其数组下标放入堆栈中
                ans[i]=' ';//暂且对应字符串位置改为空格
            }
            else if(str[i]==')')//若遇到)
            {
                if(s.empty()==false)//此时堆非空
                {
                    s.pop();//栈顶位置左括号与其匹配,从栈中弹出该已经匹配的(
                    ans[i]=' ';//修改输出中该位置为空格
                }
                else
                    ans[i]='?';//若栈为空,则无法找到(与之匹配,修改输出位置为?
            }
            else ans[i]=' ';//若为其他字符,与括号匹配无关,修改输出为空格
        }
        while(!s.empty())//字符串遍历完,栈中还有(无法匹配
        {
            ans[s.top()]='$';//修改输出位置
            s.pop();//弹出
        }
        ans[i]=0;//使输出形成字符串,在最后一个字符后添加一个空字符
        puts(str);//输出原字符串
        puts(ans);//输出答案字符串

    }
    return 0;
}

 

posted on 2014-03-31 23:29  Rita li  阅读(152)  评论(0编辑  收藏  举报