算法训练 删除多余括号

时间限制:1.0s 内存限制:512.0MB

问题描述

  从键盘输入一个含有括号的四则运算表达式,要求去掉可能含有的多余的括号,结果要保持原表达式中变量和运算符的相对位置不变,且与原表达式等价,不要求化简。另外不考虑’+’  '-'用作正负号的情况,即输入表达式不会出现(+a)或(-a)的情形。

输入格式

  表达式字符串,长度不超过255,  并且不含空格字符。表达式中的所有变量都是单个小写的英文字母, 运算符只有加+减-乘除/等运算符号。

输出格式

  去掉多余括号后的表达式

样例输入

样例一:

a+(b+c)-d

样例二:

a+b/(c+d)

样例三:

(a
b)+c/d

样例四:

((a+b)*f)-(i/j)

样例输出

样例一:

a+b+c-d

样例二:

a+b/(c+d)

样例三:

a*b+c/d

样例四:

(a+b)*f-i/j

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] chs = br.readLine().toCharArray();
List<Character> list = new ArrayList<Character>();
for (int i = 0; i < chs.length; i++) {
list.add(chs[i]);
}
String s = "";
for (int i = 0; i < func(list).size(); i++) {
s += list.get(i);
}
System.out.println(s);
} public static List<Character> func(List<Character> list) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i) == '+' || list.get(i) == '-') {
if (list.get(i - 1) == ')' && list.get(i + 1) == '(') {
list.remove(i - 1);
list.remove(i);
for (int j = i - 1; j > -1; j--) {
if (list.get(j) == '(') {
list.remove(j);
break;
}
}
for (int k = i + 1; k < list.size(); k++) {
if (list.get(k) == ')') {
list.remove(k);
break;
}
}
}
if (list.get(i - 1) == ')') {
list.remove(i - 1);
for (int j = i - 1; j > -1; j--) {
if (list.get(j) == '(') {
list.remove(j);
break;
}
}
}
if (list.get(i + 1) == '(') {
if (list.get(i) == '+')
for (int k = i + 1; k < list.size(); k++) {
if (list.get(k) == ')' && !list.contains('/') && !list.contains('*')) {
list.remove(k);
list.remove(i + 1);
break;
}
}
}
}
}
return list;
}
}

Java实现 蓝桥杯VIP 算法训练 删除多余括号的更多相关文章

  1. Java实现蓝桥杯VIP 算法训练 找公倍数

    问题描述 这里写问题描述. 打印出1-1000所有11和17的公倍数. 样例输入 一个满足题目要求的输入范例. 样例输出 与上面的样例输入对应的输出. 这道题其实没有什么可写的,但是为了让读者更方便的 ...

  2. Java实现 蓝桥杯VIP 算法训练 字符删除

    算法训练 字符删除 时间限制:1.0s 内存限制:512.0MB 问题描述 编写一个程序,先输入一个字符串str(长度不超过20),再输入单独的一个字符ch,然后程序会把字符串str当中出现的所有的c ...

  3. Java实现 蓝桥杯VIP 算法训练 连通分块(并查集)

    试题 算法训练 连通分块 资源限制 时间限制:200ms 内存限制:8.0MB 问题描述 连通分块 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 接下来m行,每行2 ...

  4. Java实现 蓝桥杯VIP 算法训练 无权最长链

    试题 算法训练 无权最长链 问题描述 给定一个n节点m边的无圈且连通的图,求直径 输入格式 第一行两个数字n,m 接下来m行每行两个数字x,y,代表x,y之间有一条边 输出格式 要求用户的输出满足的格 ...

  5. Java实现 蓝桥杯VIP 算法训练 星际交流

    算法训练 星际交流 时间限制:1.0s 内存限制:256.0MB 问题描述 人类终于登上了火星的土地并且见到了神秘的火星人.人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法 ...

  6. Java实现 蓝桥杯VIP 算法训练 Car的旅行路线

    大家可以看一下这个,蓝桥杯官网的这道题是有问题的 Car的旅行路线 算法训练 Car的旅行路线 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 查看参考代码 问题描述 又到暑假 ...

  7. Java实现 蓝桥杯VIP 算法训练 字符串编辑

    算法训练 字符串编辑 时间限制:1.0s 内存限制:512.0MB 问题描述 从键盘输入一个字符串(长度<=40个字符),并以字符 '.' 结束.编辑功能有: 1 D:删除一个字符,命令的方式为 ...

  8. Java实现 蓝桥杯VIP 算法训练 最大质因数(暴力)

    试题 算法训练 最大质因数 问题描述 给出N个数字,求出有最大的最大质因数的那个数 输入格式 第一行:一个整数N. 接下来的N行,每行一个整数A_i,表示给出的那N个数字. 输出格式 第一行:一个整数 ...

  9. Java实现 蓝桥杯VIP 算法训练 与1连通的点的个数(并查集)

    试题 算法训练 与1连通的点的个数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 没有问题描述. 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 ...

随机推荐

  1. jvm入门及理解(五)——运行时数据区(虚拟机栈)和本地方法接口

    一.虚拟机栈背景 由于跨平台性的设计,java的指令都是根据栈来设计的.不同平台CPU架构不同,所以不能设计为基于寄存器的. 优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要 ...

  2. bash初始化小建议

    bash有一些很好用但已经常被人忽略的小技巧,谨以此文记录下…… 1. 给history命令加上时间 history的命令很好用,他可以记录我们之前做了哪些操作,有了这些记录,我们可以很快捷的重复执行 ...

  3. sudo apt-get update 与 sudo apt-get upgrate 的区别

      1.sudo gedit /etc/apt/sources.list 源列表里面放置的一行行网址,在这个文件里加入或者注释(加#)掉一些源后,保存.这时候,我们的源列表里指向的软件就会增加或减少一 ...

  4. .Net Core3.0 WebApi 项目框架搭建:目录

    一.目录 .Net Core3.0 WebApi 项目框架搭建 一:实现简单的Resful Api .Net Core3.0 WebApi 项目框架搭建 二:API 文档神器 Swagger .Net ...

  5. java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;

    一,构造方法的特点 面向对象的思想是如何在java展现的呢? 就是通过类和对象 类是一组相关的属性和行为的集合.是一个抽象的概念. 对象是该类事物的具体表现形式.具体存在的个体. 一.抽象类的抽象方法 ...

  6. 计算程序运行时间(.net1.1 于.net2.0的区别)在.net2.0中提供了Stopwatch类,简单例子

    1. [代码].NET 2.0      using System.Diagnostics; private Stopwatch stw = new Stopwatch(); private void ...

  7. Python创建一个简单的区块链

    区块链(Blockchain)是一种分布式账本(listributed ledger),它是一种仅供增加(append-only),内容不可变(immutable)的有序(ordered)链式数据结构 ...

  8. C语言qsort()函数的实现

    #include <stdio.h> void qsort(void * base, int num, int width, int (*comp)(const void *, const ...

  9. poj3308 最小点权覆盖

    Paratroopers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8837   Accepted: 2663 Desc ...

  10. EventBus/EventQueue 再思考

    EventBus/EventQueue 再思考 Intro 之前写过两篇文章,造轮子系列的 EventBus/EventQueue,回想起来觉得当前的想法有点问题,当时对 EvenStore 可能有点 ...