技術を活発に保ちたい場合、最も効果的な方法は、継続的な入力を通じて十分な栄養を与えることです。わざわざ高度な知識や新しい知識を追求する必要はありません。基本的な問題を包括的かつ多次元的に分析することでも、多くのことを得ることができます。 トピック次のような質問があるとします。文字列「bianchengsanmei、xuexiyouqudezhishi、jieshiyouqudepengyou、suzaoyouqudelinghun」の中で最も繰り返しが多い文字とその繰り返し回数を取得してください。 今日はこの問題を解決しましょう。 分析するこの種の問題に対する解決策は比較的オープンであり、実装方法はさまざまです。違いは、コードの実行パフォーマンスが高いか低いかにあります (時間の複雑さと空間の複雑さが異なります)。 ここで注意すべきことは 1 つだけです。最大回数を満たす文字が複数存在する可能性があるということです。 使用目的解決:
コードは次のように実装されます。const testStr = "bianchengsanmei、xuexiyouqudezhishi、jieshiyouqudepengyou、suzaoyouqudelinghun.ii"; // 各文字とその繰り返し回数のマッピング オブジェクトを取得します。let wordsObj = {}; for (let index = 0; index < testStr.length; index++) { const word = testStr[インデックス]; wordsObj 内の単語? wordsObj[word]++ : wordsObj[word] = 1; } // 繰り返しの最大回数を取得します。let maxNum = 0; for (const word in wordsObj) { const num = wordsObj[単語]; 数値 >= 最大数値の場合 最大数 = 数値; } } // 最大繰り返し回数に対応する文字を取得し、結果を出力します for (const word in wordsObj) { const num = wordsObj[単語]; if (num === maxNum) { console.log(`最も繰り返しの多い文字は: ${ word }、繰り返し回数は: ${ maxNum }`) } } // 最も頻繁に出現する文字は i で、出現回数は 10 回です。 // 最も頻繁に出現する文字は: u、出現回数は: 10 分析:
配列とポインタ解決:
コードは次のように実装されます。const testStr = "bianchengsanmei、xuexiyouqudezhishi、jieshiyouqudepengyou、suzaoyouqudelinghun.ii"; // 文字列を配列に変換して並べ替えます。const testStrArr = testStr.split("").sort(); startIndex = 0 とします。 endIndex = 1 とします。 maxNum = 0 とします。 validWords = [] とします。 //ポインタメソッドを使用して、最大繰り返し回数と最大回数に対応する文字配列を取得します while (startIndex < testStrArr.length) { // startIndex と endIndex の文字が異なります if (testStrArr[startIndex] !== testStrArr[endIndex]) { // startIndex と endIndex 間の文字数を計算します。const rangeNum = endIndex - startIndex; if (範囲数 > 最大数) { 最大数 = 範囲数; // 新しい最大回数が発生した場合は、修飾された文字を格納する配列を再割り当てします。validWords = [testStrArr[startIndex]]; } そうでない場合 (rangeNum === maxNum) { // 新しい数字が最大数と等しい場合は、文字を文字配列にプッシュします。validWords.push(testStrArr[startIndex]); } 開始インデックス = 終了インデックス; } 終了インデックス++; } // 結果を印刷します (let index = 0; index < validWords.length; index++) { 定数 word = validWords[インデックス]; console.log(`最も繰り返されているのは: ${ word }、繰り返し回数: ${ maxNum }`) } 分析:この方法の難しさと本質は、ポインター メソッドを使用することにあります。これにより、1 サイクルで目的の結果を得ることができます。 要約するこれらはおそらく問題を解決するための 2 つの主流の考え方であり、他の多くの解決策はこれら 2 つの考え方のバリエーションとして考えることができます。 物事がどのように変化しても、本質は同じです。問題を解決する方法が明確であれば、コードの実装は単なる結果にすぎません。日々の仕事や勉強の中で、私たちは意識的に発散的思考を養い、問題をさまざまな角度から見る必要があります。違った景色を発見できるかもしれません。 JavaScript を使用して文字列内の最も繰り返しの多い文字を取得する方法について説明したこの記事はこれで終わりです。最も繰り返しの多い文字を取得する方法に関するより関連性の高い JS コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: 初心者がソースコードからMySQLのデッドロック問題を理解する
>>: Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル
目次1. マップは任意のタイプのキーを受け入れます2. マップにはキー名に関する制限はありません3....
前回の記事では、Navicat for Mysql 接続エラー 1251 (接続失敗) の問題を解決...
一般的に言えば、コンテナが起動した後、ポート マッピングを通じてコンテナが提供するサービスを使用...
ページの公開名: #wrapper - ページの外側の端が全体のレイアウト幅を制御します#conta...
目次ツリー項目にコードを追加します。 1. 右側に関連情報ページを保存します(userManage....
この記事では、JavaScriptでキャンバスを使用して座標と線を描く具体的なコードを参考までに紹介...
前回の記事「202 個の無料高品質 XHTML テンプレート (1)」に続き、123WORDPRES...
目次序文1. GMT GMTとはGMTの歴史2. UTC UTCとはUTC は次の 2 つの部分で構...
クリックハウスの紹介ClickHouse は、SQL クエリを使用して分析データ レポートをリアルタ...
目次場合コンテキスト切り替えのオーバーヘッド?要約するCPU は多くの場合、システム パフォーマンス...
RFC793 ドキュメントの SYN フラグを持つプロセス パケットはデータを伝送できません。つま...
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
前回の CSS 回転灯と同じ内容の CSS アニメーションの応用です。これは単なる別のアプリケーショ...
序文前回の面接では、実行計画について質問されたとき、多くの人がそれが何なのか知りませんでした。実行計...
目次1. appIDの申請と設定1. appidの取得方法2. AppIDの設定2. 基本的なユーザ...