5つの顔質問:スペースを置き換えます
タイトル:としてレコードの各スペース文字を置き換え、機能を進める「が20%。」例えば、「私たちは幸せです。」と入力し、出力「我々は、%20アール%の20happyを。」
アイデア: O(N-の時間計算量2溶液中)。
交換作業は、最も簡単な方法は、各ヒットスペースの後に交換しなければ、最初から最後までの文字列をスキャンする方法を考えてみましょう。それは3つの文字に文字を交換しているので、2バイトの後ろに戻って設定する必要があります。
文字列の長さがnであると仮定する。各空白文字のため、Oの後方移動(N必要なO(n)のスペース文字を含む文字列のように、合計時間複雑度はO、文字)を(N 2)。
実際には、順番にアイデアは、背面から前方に交換した場合、実際には、携帯電話の将来の数が以前よりもはるかに少ないです。
二つのアイデア:O(n)との時間複雑ソリューションの。
- 最初の配列を介して、統計のアレイ内のスペースの数とは、文字の配列の全体の長さを計算します。
- 各スペースに置き換えられているので、2バイトの長さを増加させるので、n個のスペースがある場合、文字配列2nの長さを増加させます。
- 二つのポインタ、P1、およびP2の準備。P1用のポイント元の文字列の端部は、P2は、を指し、交換後に終了。
- 最初のポインタが最初のスペースを打つまで、順番に文字列の内容をコピーします。
- あるいは、「20%」の最初の空間は、第1のフレームへのポインタが、前進2ポインタ3が前進グリッドを移動させます。
- 今度は前方にコピーする文字列にはスペースを打つまで。
- 置換文字列最後から二番目のスペースは、最初のポインタが一つのフレーム、3つの前進第二フレームポインタによって前方に移動されます。
アイデア上記のコード:
.....(その後のサプリメント)
このタイトルは、ポイントを調べます。
- 文字列のプログラミング能力;
- 時間効率の分析能力。
- 長い、潜在的な問題になるだろう文字列を分析した後、インタビュアーと通信するためのイニシアチブをとります。
- 候補者の思考能力を調べます。
6面の質問:最初からリストを印刷し終了します
タイトル:各ノードの値をプリントアウトするために、リストのヘッドノード、頭から尾のターンを入力します。
思考:それは通過しなければならない。この問題を解決するために。最初から最後までトラバーサルの順序、および尾から頭に出力され、それが「明らかに最終コンフィギュレーション、それによってスタック考えられる使用を」。
.....(その後のサプリメント)
2思考:スタックの考えは再帰を使って考えることは困難ではない望ましい結果を得ることができます。そして、再帰的な性質もスタック構造です。最初の再帰的な出力ノードが背後に、その後、順番にノード自体を出力したときに順番にリンクされたリストで出力を達成するために、我々は、各ノードへのアクセス権を持っています。
.....(その後のサプリメント)
再帰的な問題があります:リストは非常に長い時間である場合には、関数呼び出しスタックオーバーフローを引き起こす可能性がある、関数呼び出しの深いレベルにつながります。だから、それはまだスタックに基づいており、より良い循環です。