实现思路
- 首先需要一个String s变量接受一个中缀字符串。然后通过一个方法将字符串转换成一个ArrayList al 集合方便遍历。
- 准备两个栈,一个栈是存储数栈,另一个是存储符号的符号栈。
- 对ArrayList 集合进行遍历取数组,是数直接放入数栈中
- 若是字符串有以下几种情况
- 若字符串为空栈,则直接入栈。或要入栈的符号“(”右括号也直接入栈
- 若入栈的符号为“)”左括号,则符号栈里的符号进行弹栈并压入数栈里
直到弹出“(”右括号-------消除阔号
- 若要压栈的符号计算优先级大于栈顶则直接入栈。
- 若要压栈的符号计算优先级小于或等于栈顶,则符号栈进行弹栈操作,直到符号栈栈顶优先级小于要入栈的符号或者已经为空栈
- 待遍历完ArrayList数组后,把符号栈所有的内容弹出并压入数栈中
- 逆序输出数组就是我们所要的逆波兰表达式。
1.将字符串转换成一个ArrayList al 集合方便遍历。
public ArrayList<String> T(String s){
ArrayList<String> arraylist=new ArrayList<String>();
char ch;
int index=0;
while(index<s.length()){
ch =s.charAt(index);
if(ch<48||ch>57){
arraylist.add(ch+"");
}else{
String s2