LeetCode 241. 为运算表达式设计优先级

àì夳堔傛蜴生んèń 2022-10-29 07:37 212阅读 0赞

在这里插入图片描述
大佬题解

  1. class Solution {
  2. public List<Integer> diffWaysToCompute(String input) {
  3. List<Integer> res = new LinkedList<>();//这里要注意,每一个调用递归函数都会有一个【属于】本次
  4. // 调用的res列表存放数据
  5. // 递归函数传参传进来的是上一层左半部分或者右半部分
  6. for(int i=0;i<input.length();i++){
  7. //一层(一次函数调用中)需要将传入数字符串遍历完
  8. char temp = input.charAt(i);
  9. if(temp == '+' || temp == '-' || temp == '*'){
  10. List<Integer> left = diffWaysToCompute(input.substring(0,i));
  11. List<Integer> right = diffWaysToCompute(input.substring(i+1));
  12. for(int l:left){
  13. for(int r:right){
  14. if(temp == '-'){
  15. res.add(l-r);//而一层中只有一个res用于存放数据
  16. }else if(temp == '+'){
  17. res.add(l+r);
  18. }else if(temp == '*'){
  19. res.add(l*r);
  20. }
  21. }
  22. }
  23. }
  24. }
  25. //这种情况是只有一个数字字符传入了递归函数,那么该次调用直接返回该数值的list集合
  26. if(res.size() == 0){
  27. res.add(Integer.valueOf(input));
  28. return res;
  29. }
  30. return res;
  31. }
  32. }

发表评论

表情:
评论列表 (有 0 条评论,212人围观)

还没有评论,来说两句吧...

相关阅读