zoukankan      html  css  js  c++  java
  • 括号匹配

    #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;
    }
  • 相关阅读:
    MySQL-基础知识整理
    设计模式-适配器模式
    MySQL
    MySQL-5.7 填坑
    MySQL
    Oracle
    SQL 注入
    Apache JMeter
    AppScan
    DNS 搜索
  • 原文地址:https://www.cnblogs.com/Xilian/p/3637113.html
Copyright © 2011-2022 走看看