classSolution{publicList<Integer>diffWaysToCompute(Stringexpression){returnways(expression,newHashMap<>());}privateList<Integer>ways(finalStrings,Map<String,List<Integer>>memo){if(memo.containsKey(s))returnmemo.get(s);List<Integer>ans=newArrayList<>();for(inti=0;i<s.length();++i)if(!Character.isDigit(s.charAt(i)))for(finalinta:ways(s.substring(0,i),memo))for(finalintb:ways(s.substring(i+1),memo))if(s.charAt(i)=='+')ans.add(a+b);elseif(s.charAt(i)=='-')ans.add(a-b);elseans.add(a*b);if(ans.isEmpty()){// Single numbermemo.put(s,Arrays.asList(Integer.parseInt(s)));returnmemo.get(s);}memo.put(s,ans);returnans;}}