java中缀表达式变后缀表达式_中缀表达式转后缀表达式

不通过

您的代码已保存

运行超时:您的程序未能在规定时间内运行结束,请检查是否循环有错或算法复杂度过大。点击对比用例标准输出与你的输出

case通过率为93.33% import java.util.*;

public class Main

{

public static void main(String [] args)

{

Scanner sc=new Scanner(System.in);

while(sc.hasNext())

{

String str=sc.next();

int index=0;

Stack operStack=new Stack<>();//符号栈

List list=new LinkedList<>();//一开始是存放数的集合,到后来也会存放符号

while(index

{

String s=""+str.charAt(index);

//如果扫描到的是符号

if(s.matches("[^a-z]"))

{

while(true)

{

//如果符号栈为空

if(operStack.empty())

{

operStack.push(s);//直接进入符号栈

break;

}

else if(getPriority(s)>getPriority(operStack.peek()))//如果运算符优先级比栈顶元素优先级高

{

operStack.push(s);

break; }

else//否则将栈顶元素弹出来,放到list集合中

{

list.add(operStack.pop());

//再次与新的栈顶元素进行比较运算符优先级

}

}

}

else if(s.matches("[a-z]"))//如果扫描到的是数

{

String builder="";

while(index

{

builder+=(""+str.charAt(index));

index++;

}

list.add(builder);

builder="";

index-=1;

}

index++;

}

while(!operStack.empty())

{

list.add(operStack.pop());

}

for(String item:list)

{

System.out.print(item);

}

}

}

private static int getPriority(String oper)//获取运算符的优先级

{

if(oper.equals("+")||oper.equals("-"))

{

return 1;

}

else if(oper.equals("*")||oper.equals("/"))

{

return 2;

}

else

{

System.out.println("非法运算符!");

return 0;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值