前言:
我们为了运算方便确定将表达式**"1+((2+3)4)-5";*
转为 ArrayList [1,+,(,(,2,+,3,),*,4,),-,5
大致思路分析:
1.先定义list ,用来存放中缀表达式的内容
2.定义一个指针用来遍历;,定义一个字符串用来拼接多位数,定义一个char 每遍历一个字符,就放入到char
3.开始循环,如果是符号,我们需要加入到集合中去,是数字则判断是否为多位数,不是多位数的话继续扫描下一个,是多位数的话直接放入集合中
public static List<String> toInfixExpressionList(String s) {
// 定义一个list,存放中缀表达式对应的内容
List<String> ls = new ArrayList<String>();
int i = 0; // 这个是一个指针,用于遍历中缀字符串
String str; // 对多位数的拼接工作
char c; // 每遍历一个字符,就放入到c
do {
// 如果c是一个非数字,我需要加入到ls去
// 小于1大于9判定为括号和+-*/
if ((c = s.charAt(i)) < 48 || (c = s.charAt(i)) > 57) {
ls.add("" + c);
i++;
} else { // 如果是一个数字,需要考虑多位数的问题
// 先将str清空
str = "";
while (i < s.length() && (c = s.charAt(i)) >= 48 && (c = s.charAt(i)) <= 57) {
// 拼接
str += c;
i++;
}
ls.add(str);
}
} while (i < s.length());
{
return ls;
}
}
总结:这个还是挺简单的