今日は午後から面接があります。二次面接でアルゴリズムの質問がありました。アルゴリズムについては何もわかりません。誰かに手伝ってください。
今回のテーマは、括弧の加算、減算、乗算、除算を計算する関数を実装することです。入力文字列は (1 2)/4 5 (3 5)*3 に似ています。同様の法的演算を行うことができます。
一般的な考え方について少し説明してもらえますか?インタビュアーはこれはアルゴリズムの質問だと真剣に言いましたが、eval() の実装ではないと思いますよね?
漂亮男人2017-05-19 10:29:19
最も一般的な方法は、構文分析で式ツリーを構築し、それを解決することです。
自分で作成することも、Antlr と呼ばれる非常に専門的で多用途なライブラリを使用することもできます。
もちろん、面接では文法を分析して自分で文法ツリーを構築するように求められるはずですが、実際にそれを行うとなると、Antlr の方が優れています。
巴扎黑2017-05-19 10:29:19
eval の放棄されたメソッドの使用はお勧めしません。 1. 正規表現を使用することをお勧めします 2. データ構造でスタックを使用する方法
お勧めの本: JavaScript データ構造とアルゴリズムを学ぶ
最近たまたまスタック、キュー、バイナリツリーを勉強していました
大家讲道理2017-05-19 10:29:19
それを実装するにはスタックを使用します。2 年前にデータ構造の実験をしていたときに、それをどこに配置するかを探します。私の全体的な印象は、2次元配列を使用して演算子の優先順位を決定し、それを計算するためにスタックを使用するというものです。