トピックを理解する 最近アルゴリズムの問題をたくさん見ていますが、小さな問題を使ってアルゴリズム分析のプロセスを記録したいと思っています。タイトルは「ピッグ・ラテン」
説明が少ない質問に遭遇したとき、最初の反応は、説明が簡単であればあるほど、隠された条件が増えるだろうということです。慌てないで、まずはWikipediaのPig Latinの説明を読んでください:Pig Latin。質問を見るときは、まずWikipediaをチェックして質問の背景や由来を理解するようにしています。そうすることで、質問をより深く理解でき、質問の解決がより面白くなります。簡単にルールを分析してみましょう。単語が子音で始まる場合、子音を末尾に移動してayを追加します。例:
母音: a、e、i、o、u 単語が母音で始まる場合は、単語の直後にwayを付け加えます。例:
トピックを分析した後、テストケースを読んで、抜け漏れがないか確認する必要があります。最後のものをご覧ください。
このルールは実際には最初のケースに当てはまります。母音が見つからない場合は、最後に ay を追加するだけです。 分析プロセス アルゴリズムの問題が発生すると、私たちは「都市を攻撃する」ためにいくつかのルーチンに従います。 1. アルゴリズムの分類。この質問は文字列に関するものです。文字列操作には 2 種類しかありません。 a. インデックスによるトラバース b.replace、特にreplaceでは、倫理の問題ではありません。 2. 最も単純なものから最も高度なものまで: a. まず、与えられた条件に従って、暴力の方向で擬似コードを記述します。 b. ロジックに基づいて主要なループ要因と最適化方法を見つける c. 最適化を試みる 疑似コード まず疑似コードを記述します。コードのこの部分は比較的大まかで、主に分析プロセスを整理するために使用されます。
分析プロセスができたので、JavaScriptコードを記述できます。
上記のコードを確認してください。テストに合格したので、最適化する方法を分析しましょう。コード分析から、コード全体のコアロジックは${str.slice(i)}${str.slice(0, i)}ayです。重要なポイントは、最初の母音のインデックスを見つけることです。そのため、コードを変更します。
コードが簡素化され、ロジックが明確になりました 別の方法 分析プロセスの観点から見ると、ループトラバーサル方式を使用して完了したので、他の方法(置換)はどのように実装する必要がありますか?最初の方法の結果から判断すると、位置を交換するには通常のグループ化方法が必要です。アイデアとしては、これを 2 つのグループに分けることです。最初のグループは語頭から母音まで、2 番目のグループは母音から語尾までです。次に、2 つのグループの順序を入れ替えて、接尾辞を追加します。正規表現を開発およびデバッグする場合、正規表現のデバッグには regex101.com が推奨されます。 デバッガーを使用して、この正規表現を完成させてください: /([^aeiou]*)(\w*)/ 説明
完全なコード
テストを通じて、上記のコードは母音が先頭にあるケースをカバーしましたが、他の 2 つのケースも含まれています。先頭に母音がくる場合、追加される接尾辞は way です。つまり、([^aeiou]*) にマッチしない $1 が空の場合、接尾辞は ay になります。この考え方に従って、JavaScript 文字列置換メソッドの 2 番目のパラメータは、サポート関数 String.prototype.replace() です - JavaScript | MDN
要約する まとめると、アルゴリズムの問題を解いたときの基本的な手順は
最後に、ちょっとしたアドバイスです。短期的に面接で突破口を開きたいなら、Leetcode を実践してください。こちらもおすすめ: https://www.codewars.com/。これに比べると、codewars は最適なアルゴリズムよりも、現在のプログラミング言語の実際の動作に重点を置いており、そこには「予想外の驚き」がたくさんあります。数々の「奇妙なトリックと黒魔術」に感動することでしょう。 CodeWars の難易度制限はもっと高いという噂があります。 |
<<: ベンジオとヒントンの絶え間ない探求:ディープラーニングアルゴリズムが脳の学習方法を明らかにする
10月17日のニュースによると、人工知能はプログラマーのプログラミング速度を上げ、ドライバーの安全...
今日最も進歩的で、最先端で、刺激的なもの…データ サイエンスと機械学習は、今日非常に魅力的で、非常に...
胸部X線(CXR)検査は、さまざまな病気のスクリーニングや診断に広く使用されている臨床画像診断法です...
[[432637]]銀行ガバナンスリーダーシップネットワーク(BGLN)は最近、銀行が人工知能(AI...
NetEase Intelligence News: 人工知能はまもなく私たちの世界を変えるでしょ...
3月19日、杭州でCSHIA 2019スマートホーム業界開幕式が開催されました。ブランドメーカー、イ...
ロボットが社会を変える出発点は、旅行の分野にあるかもしれない。 1956 年、ジョン・マッカーシーは...
ChatGPT は、大規模言語モデル (LLM) に基づく業界をリードするチャットボットとして、テク...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
ミスティはとんでもない乗り心地を体験した。 FoundryとVenrockから1,150万ドルを調達...
最近、ファーウェイの創業者任正非氏はインタビューで、自分が最も関心を持っている問題は基礎科学研究と教...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
論文リンク: https://arxiv.org/abs/1706.10207概要: この論文では、...