import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
String str=scan.nextLine();
System.out.println(switchExp(str));
}
public static String switchExp(String str) {
String ans="";
Deque<Character> d=new LinkedList<Character>();
HashMap<Character,Integer> map=new HashMap<>();
map.put(')',0);
map.put('+',1);
map.put('-',1);
map.put('*',2);
map.put('/',2);
map.put('(',3);
for(int i=0;i<str.length();i++){
char c=str.charAt(i);
if(Character.isDigit(c)){
ans+=c;
}else{
if(d.isEmpty()||map.get(d.peek())<map.get(c)||d.peek()=='('){
d.push(c);
}else{
if(c==')'){
while(!d.isEmpty()&&d.peek()!='('){
ans+=d.pop();
}
d.pop();
}else{
while(!d.isEmpty()&&map.get(d.peek())>map.get(c)){
ans+=d.pop();
}
d.push(c);
}
}
}
}
while(!d.isEmpty()){
ans+=d.pop();
}
return ans;
}
}
表达式中缀转后缀JAVA
最新推荐文章于 2025-04-25 19:16:38 发布