中缀表达式转后缀表达式

题目描述:


中缀表达式转后缀表达式_牛客网
将中缀表达式转为后缀表达式,输入 a+bc/d-a+f/b 输出 abcd/+a-fb/+
要求:语言不限;输入输出均为单个字符串;操作数用单个小写字母表示,操作符只需支持 +-*/,按照四则运算顺序确定优先级,不包含括号。


输入描述:

一个字符串为合法的中缀表达式
字符串长度不超过200000

输出描述:

对应的后缀表达式

输入示例:

a+b*c/d-a+f/b

输出示例:

abc*d/+a-fb/+

题目分析:


这道题呢,中缀表达式转后缀表达式,从左到右依次遍历字符串,当遇到操作数时直接输出;当遇到操作符时,如果当前操作符优先级小于等于栈顶优先级,则将栈顶操作符出栈,然后再将当前操作符压栈。当遍历完字符串后如果栈不为空,则将栈中元素依次出栈。具体代码如下~


代码实现:

import java.util.Scanner;
import java.util.HashMap;
import java.util.Stack;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        String str=sc.nextLine();
        HashMap map=new HashMap();
        map.put("+",0);
        map.put("-",0);
        map.put("*",1);
        map.put("/",1);
        StringBuffer sb=new StringBuffer();
        Stack stack=new Stack();
        for(int i=0;i

你可能感兴趣的:(中缀表达式转后缀表达式)