首页 > 其他分享 >【提高】删除多余括号

【提高】删除多余括号

时间:2024-10-25 19:32:34浏览次数:1  
标签:return 删除 int else 括号 多余 fi

#include <iostream>
using namespace std;
string a;
int b[280]={0};
int fi(char l){
    if(l=='*'){
        return 2;
    }else if(l=='+'){
        return 1;
    }else if(l=='/'){
        return 5;
    }else if(l=='-'){
        return 4;
    }else{
        return 0;
    }
}
bool x(){
    int left=-1,right=-1,in=0,lleft,rright;
    for(int i=0;i<a.size();i++){
        if(a[i]=='('){
            left=i;
        }else if(a[i]==')'){
            right=i;
            break;
        }
    }
    if(left==-1||right==-1){
        return false;
    }
    lleft=fi(a[left-1]);
    rright=fi(a[rright+1]);
    int _min=4;
    for(int i=left+1;i<right;i++){
        if(fi(a[i])>0 && !b[i]){
            if(fi(a[i]<_min)){
                _min=fi(a[i]);    
            }
        }
        b[i]=1;
        b[i-1]=1;
        if(i==right-1){
            b[i+1]=1;
        }
    }
    a[left]='{';
    a[right]='}';
    if(_min<lleft){
        a[left]='[';
        a[right]=']';
    }
    cout<<lleft<<" "<<_min<<" ";
    return true;
}
int main(){
    cin>>a;
    while(x()){
        cout<<a<<endl;
    }
    for(int i=0;i<a.size();i++){
        if(a[i]=='['||a[i]==']'){
        }else if(a[i]=='['){
            cout<<'(';
        }else if(a[i]==']'){
            cout<<')';
        }else {
            cout<<a[i];
        }
    }
    return 0;
}

 

标签:return,删除,int,else,括号,多余,fi
From: https://www.cnblogs.com/liujiaxing-/p/18503164

相关文章

  • 如何删除 Git 中的 log
    ​为了维护Git仓库的清晰和整洁,可能需要删除一些不必要的日志。以下步骤将指导你:1.理解Git日志的结构;2.使用交互式rebase方法;3.应用filter-branch命令;4.采用BFGRepo-Cleaner工具;5.删除和清理无用的对象。首先,了解Git的日志结构对于后续的操作至关重要。1.理解Git......
  • 第44篇 正确删除容器和镜像的方式
    使用正确的命令删除容器和镜像1.先查看正在运行的容器,找到容器id【容器id取前三位数】,删除容器1.1查看运行容器dockerps-aStatus是UP表示容器正在运行直接删除容器会报错,先停止容器的运行1.2停止正在运行的容器dockerstop容器id前三位查看容器状态,Status是Exi......
  • 解决Pycharm设置虚拟环境,pip仍为全局的问题(即使命令行前有括号,显示已经进入了虚拟环境
    主要原因:路径带中文,即使重命名后一些环境信息没有跟着自动更新由此引发的:问题1、进入venv/Scripts后,piplist时候有乱码问题2、pycharm只能读取到全局的pip,读取不到你想要的虚拟环境中的pip了怎么解决:其实最暴力的方法,是从头开始重建项目,但只适合初期还没有太大工作量的项目......
  • 常见的数据库删除方法
    常用的三种删除方式:通过delete、truncate、drop关键字进行删除;这三种都可以用来删除数据,但场景不同。执行速度:drop>truncate>>DELETE1、delete命令DELETE属于数据库DML操作语言。在InnoDB中,DELETE其实并不会真的把数据删除,mysql实际上只是给删除的数据打了个标......
  • 20. 有效的括号
     classSolution{public:boolisValid(strings){intr1=0,r2=0,r3=0;chartemp;stack<char>stk;for(inti=0;i<s.size();++i){if(s[i]=='('||s[i]=='['||s[......
  • 【leetcode-面试经典 150 题】-4.删除有序数组中的重复项 II
    题目:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用O(1)额外空间的条件下完成。示例1:输入:nums=[1,1,1,2,2,3]输出:5,nums=......
  • 如何在Git中删除一个仓库
    在Git中删除一个仓库分为两种情况,分别是:一、从远程仓库中删除仓库;二、从本地仓库中删除仓库。从远程仓库中删除仓库的步骤有:1.登录到远程仓库;2.找到仓库;3.进入仓库设置;4.删除仓库;5.确认删除;6.等待删除完成;7.删除完成。首先,你需要登录到托管你项目的远程仓库平台,如GitHub、......
  • [数据结构] 删除单链表中最小值结点(C语言版本)
    如果对单链表基本操作或概念不理解的可以跳转:单链表的基本操作(C语言版)-CSDN博客https://blog.csdn.net/m0_74181956/article/details/143082621?spm=1001.2014.3001.5501算法思想:如图所示:定义指针p为L的第一个结点,pre为L的头结点,min为记录每次遍历的最小值结点,minpre为记......
  • 关于wps卸载不干净留下的office6文件夹删除问题
    直接说操作0.问题描述:wps卸载后,office6文件夹无法删除,删除dll文件失败,并且一直显示该文件已在Windows资源管理器中打开,不知道被注入哪个进程中,导致无法删除1.点击office6文件夹,进去有个一堆数字的11.213....文件夹,点进去,会发现两个dll文件大概如下qingnse64.dll等文件2.这......
  • 如何恢复华为删除的照片
    照片的意外删除或丢失对任何人来说都是令人心碎的经历。幸运的是,如果您是华为智能手机用户,有多种方法可以从华为恢复已删除的照片。在本恢复指南中,我们将引导您通过以下方法来恢复那些珍贵的时刻,帮助您保持图像记忆的完整性。第1部分:如何通过图库恢复华为上已删除的照片华......