ホームページ >バックエンド開発 >C++ >1 つの位置だけが異なる文字列のペアの数を数えます

1 つの位置だけが異なる文字列のペアの数を数えます

WBOY
WBOY転載
2023-09-04 20:13:05800ブラウズ

###############導入###

文字列は英数字で構成され、各文字は決められた位置に関連付けられます。文字位置の範囲は 0 から文字列長までです。ある位置がまったく異なる文字を隣接文字といいます。 1 つの位置だけが異なる文字列のペアの数を数えます

この記事では、1 つの位置が完全に異なる文字列の配列を入力として受け取るコードを開発します。このトピックをよりよく理解するために、次の例を見てみましょう -

###例###

例 1 - str - {"abc", "cba", "dbc", "acc"}

出力 - 2

たとえば、次の例では、{"abc", "dbc"} と {"abc", acc"} の 2 つのペアを生成できます。これらの文字列は、それぞれ 1 文字の位置だけが異なります。

この記事では、マッピングを使用して類似の文字列を格納するコードと、文字列ペアの総数を取得するパターンを開発します。 C マップは、一定の時間計算量でデータを保存および取得するためにキーと値のペアを利用します。

###文法###

substr()

substr() メソッドは、より大きな文字列の先頭から末尾-1 までの部分文字列にアクセスするために使用されます。アクセスされるすべてのインデックスは連続しており、順序付けされている必要があります。

###パラメーター -###

st - 開始位置

end - 部分文字列アクセスが終了する終了位置

###アルゴリズム###

文字列ベクトル、文字列

を受け入れます

最初に、条件を満たすペアの合計数を保存するカウンターを維持します。

同一の文字列と、ワイルドカードを保持するパターンを満たす文字列を格納するために 2 つのマップを維持します。このマッピングが m1 であると仮定します。

    同様の文字列を保存するために別のマップを維持します。このマッピングが m2 であると仮定します。
  • 入力配列に対して反復を実行します。
  • 同様のタイプの文字列が観察されるたびに、m2 マップ内の対応するカウントが増加します
  • 部分文字列は、文字列の個々の文字をワイルドカード文字に置き換えることによって作成されます
  • 同様のタイプのパターンが観察されるたびに、m1 グラフ内の対応するカウントが増加します
  • m1 と m2 でそれぞれ観察される文字列ペアの合計を計算します。
  • これらの合計値を使用してカウントを増やします。
  • ###例###
  • 次の C コード スニペットは、文字列の配列を入力として受け取り、1 つの位置だけが異なるペアの総数をカウントするために使用されます -
  • リーリー ###出力### リーリー ###結論は###

    Maps は、レコードの挿入と更新のプロセスを O(1) の時間計算量でシミュレートします。 C の substring メソッドを使用すると、指定したインデックス間の順序で文字列の文字にアクセスできます。 n と n-1 の積を 2 で割ると、任意の数のペアの合計が得られます。

以上が1 つの位置だけが異なる文字列のペアの数を数えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。