笔试面试 存在中缀表达式:(2*(3-4))*5,通过下面的代码将其转换为后缀表达式,则当扫描到字符4时,栈ops中所存元素为() /** * 将中缀表达式转换为后缀表达式 * @param s 中缀表达式 * @return String字符串 后缀表达式 */ private String postfix(String s){ // 后缀表达式 StringBuilder sb = new StringBuilder(); Stack<Character> ops = new Stack<>(); int i = 0; while(i < s.length()){ char c = s.charAt(i++); if (c == ‘(‘ || c == ‘+’ || c == ‘-‘ || c == ‘*’){ // 加一个空格是为了将操作数之间隔开 sb.append(” “); pushOP(sb,c,ops); continue; } if (c == ‘)’){ // 弹出操作符直到( while(ops.peek() != ‘(‘){ sb.append(ops.pop()); } ops.pop(); continue; } sb.append(c); } // 弹出栈中元素 while(!ops.isEmpty()){ sb.append(ops.pop()); } return sb.toString(); } private void pushOP(StringBuilder sb,char op,Stack<Character> ops){ // 栈空,或者栈顶元素为(,操作符直接放入栈中 if (ops.isEmpty() || ops.peek() == ‘(‘ || op == ‘(‘){ ops.add(op); return; } char c = ops.peek(); // 栈顶操作符的优先级低于当前操作符,直接压入栈中 if (c != ‘*’ && op == ‘*’){ ops.add(op); return; } // 否则,弹出栈顶元素,继续比较 c = ops.pop(); sb.append(c); pushOP(sb,op,ops); }
笔试面试 产品经理在日常生活中,往往通过不断地观察和思考激发灵感,创造价值的同时也让自己取得进步和升华。而思考中往往会涉足其他领域/行业,你是如何使自己快速地了解某个领域/行业呢?可以用某个领域/行业举例,证明自己的认知过程及结果。