今日は午後から面接があります。二次面接でアルゴリズムの質問がありました。アルゴリズムについては何もわかりません。誰かに手伝ってください。
今回のテーマは、括弧の加算、減算、乗算、除算を計算する関数を実装することです。入力文字列は (1 2)/4 5 (3 5)*3 に似ています。同様の法的演算を行うことができます。一般的な考え方について少し説明してもらえますか?インタビュアーはこれはアルゴリズムの質問だと真剣に言いましたが、eval() の実装ではないと思いますよね?
ディスパッチングフィールドアルゴリズムを使用して、中置式を接尾式に変更します(逆ポーランド式)
eval はメソッドですが、比較的標準化されていないため、ほとんどの場合は使用しないでください。
この質問に対する正規加算二分木演算の4つの式
スタックを使用して式の評価を実装するには、いくつかの方法があります
データ構造に対して逆ポーランド語を使用できます
最も一般的な方法は、構文分析で式ツリーを構築し、それを解決することです。 自分で作成することも、Antlr と呼ばれる非常に専門的で多用途なライブラリを使用することもできます。 もちろん、面接では文法を分析して自分で文法ツリーを構築するように求められるはずですが、実際にそれを行うとなると、Antlr の方が優れています。
JavaScriptにおける四則演算の解析アルゴリズムと例、ぜひご覧ください
JavaScriptにおける四則演算の解析アルゴリズムと例
eval の放棄されたメソッドの使用はお勧めしません。 1. 正規表現を使用することをお勧めします 2. データ構造でスタックを使用する方法お勧めの本: JavaScript データ構造とアルゴリズムを学ぶ最近たまたまスタック、キュー、バイナリツリーを勉強していました
これは...文字列を入力した場合 eval() を直接使用できます
var a = '(1+2)/4+5+(3+5)*3';eval(a);
文字列の四則演算を解析する一般的に使用される方法は、逆ポーランド法です
それを実装するにはスタックを使用します。2 年前にデータ構造の実験をしていたときに、それをどこに配置するかを探します。私の全体的な印象は、2次元配列を使用して演算子の優先順位を決定し、それを計算するためにスタックを使用するというものです。
ディスパッチングフィールドアルゴリズムを使用して、中置式を接尾式に変更します(逆ポーランド式)
リーリーeval はメソッドですが、比較的標準化されていないため、ほとんどの場合は使用しないでください。
この質問に対する正規加算二分木演算の4つの式
スタックを使用して式の評価を実装するには、いくつかの方法があります
データ構造に対して逆ポーランド語を使用できます
最も一般的な方法は、構文分析で式ツリーを構築し、それを解決することです。
自分で作成することも、Antlr と呼ばれる非常に専門的で多用途なライブラリを使用することもできます。
もちろん、面接では文法を分析して自分で文法ツリーを構築するように求められるはずですが、実際にそれを行うとなると、Antlr の方が優れています。
JavaScriptにおける四則演算の解析アルゴリズムと例、
ぜひご覧ください
JavaScriptにおける四則演算の解析アルゴリズムと例
eval の放棄されたメソッドの使用はお勧めしません。 1. 正規表現を使用することをお勧めします 2. データ構造でスタックを使用する方法
お勧めの本: JavaScript データ構造とアルゴリズムを学ぶ
最近たまたまスタック、キュー、バイナリツリーを勉強していました
これは...文字列を入力した場合
eval() を直接使用できます
var a = '(1+2)/4+5+(3+5)*3';
eval(a);
文字列の四則演算を解析する一般的に使用される方法は、逆ポーランド法です
それを実装するにはスタックを使用します。2 年前にデータ構造の実験をしていたときに、それをどこに配置するかを探します。私の全体的な印象は、2次元配列を使用して演算子の優先順位を決定し、それを計算するためにスタックを使用するというものです。