JavaScript を使用して文字列内の最も繰り返しの多い文字を取得する方法

JavaScript を使用して文字列内の最も繰り返しの多い文字を取得する方法

技術を活発に保ちたい場合、最も効果的な方法は、継続的な入力を通じて十分な栄養を与えることです。わざわざ高度な知識や新しい知識を追求する必要はありません。基本的な問題を包括的かつ多次元的に分析することでも、多くのことを得ることができます。

トピック

次のような質問があるとします。文字列「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

分析:

  • これは多くの人が最初に思いつく解決策であり、「プロセス指向」プログラミングの考え方に沿ったものです。
  • ループは全部で3つあり、最適化の余地が大いにあります。

配列とポインタ

解決:

  • 文字列を配列に変換し、繰り返される文字がグループ化されるように並べ替えます。
  • ポインターのアイデアを使用して、最大繰り返し回数と対応する文字配列を取得します。
  • 結果を出力します。

コードは次のように実装されます。

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 を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • JS で正規表現を使用して文字列内の繰り返し文字を削除する方法
  • 文字列内の繰り返し文字を削除する JS メソッド
  • JS 文字列から連続する文字または繰り返し文字をすべて削除する例
  • 文字列内の重複値を削除するJSメソッド
  • JavaScript 文字列から重複文字を削除する方法
  • JS は文字列配列内の重複要素をクリアします
  • JavaScriptの配列と文字列内の重複値を削除する方法の詳細な説明
  • JavaScriptは文字列内の最初の非繰り返し文字を見つける機能を実装します
  • JSはソートされた文字列の重複行を見つけるメソッドを実装します

<<:  初心者がソースコードからMySQLのデッドロック問題を理解する

>>:  Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

推薦する

よく使われる3つのMySQLデータ型

MySQL のデータ フィールドのタイプを定義することは、データベースを最適化するために非常に重要で...

Web Storage APIの使用に関する簡単な説明

目次1. ブラウザのローカルストレージ技術1.1、セッションストレージ1.2、ローカルストレージ2....

Dockerリンクはコンテナの相互接続を実現します

目次1.1. IP経由のコンテナ間のネットワークアクセス1.2. コンテナ名またはコンテナIDによる...

インターフェース設計の10の一般的なルール

<br />これは私がずっと前に集めた記事です。皆さんの参考のために共有したいと思います...

HTML iframe 使用状況の概要の収集

Iframe 使用状況の詳細な分析<iframe frameborder=0 width=17...

MySQL テーブルの断片化を解消し、スペースを再利用する方法

目次MySQL テーブルの断片化の原因行の断片化行内断片化空き領域の断片化MySQL で極度に断片化...

MySQLデータベースのロック機構の分析

同時アクセスの場合、非反復読み取りやその他の読み取り現象が発生する可能性があります。高い同時実行性に...

CSS の 6 つの重要なセレクター (3 秒で覚える)

出典: https://blog.csdn.net/qq_44761243/article/deta...

Vue3.0はドロップダウンメニューのカプセル化を実装します

Vue3.0 がリリースされてからしばらく経ちましたが、勉強を始める必要があります。まず、達成したい...

vite2.x は ant-design-vue@next コンポーネントのオンデマンド読み込みを実装します。

1. 使用バージョンバイト:2.0 ant-design-vue: 2.0.0-rc.8ヴュー:3...

Linux での MySQL 5.7.19 (tar.gz) インストール グラフィック チュートリアル

Linux で MySQL-5.7.19 バージョンをインストールするための最初のチュートリアル。す...

...

Linux仮想マシンをWiFiに接続する方法

生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...

VUE ユニアプリコア知識の簡単な紹介

目次仕様a. ページファイルはVueの単一ファイルコンポーネント仕様に準拠しています。 b. コンポ...

Vue+echart で 2 列チャートを実現

この記事では、vue+echart を使って二重列チャートを実現するための具体的なコードを参考までに...