思路分析
- 将符号和数字遍历放入list中
- 在遍历数字的时候要考虑到多位数的问题,进行多位数的拼接
package com.ran;
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class hello {
public static void main(String[] args) {
//完成中缀表达式转后缀表达式
//1. 1+((2+3)*4)-5 =》 1 2 3 +4 * + 5 -
//2.直接对一个字符串进行操作不太方便,因此先将这个字符串转成一个中缀表达式对应的list
String biaodashi="1+((2+3)*4)-5";
System.out.println(zhuanzhongzhui(biaodashi));
}
//方法:将中缀表达式转成对应的list
public static List<String> zhuanzhongzhui(String biaodashi){
//定义一个list 存放中缀表达式对应的数据
List<String> qq=new ArrayList<String>();
//指针 用于遍历中缀字符串
int i=0;
String str; //做对多位数的拼接工作
char c; //每遍历到一个字符就放入c
do {
//若果c是一个非数字,就需要加入到qq
if( (c=biaodashi.charAt(i)) <48 || (c=biaodashi.charAt(i)) >57){
qq.add(""+c);
i++; //需要后移
}else{
//如果是一个数,需要考虑多位数的问题
str=""; //制成空字符串
while (i<biaodashi.length()&&(c= biaodashi.charAt(i))>=48&&(c= biaodashi.charAt(i))<=57){
str+=c;//拼接
i++;
}
qq.add(str);
}
}while (i<biaodashi.length());
return qq;
}
}
运行结果如下: