C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++で文字を削除せずに2つの文字列アナグラムを作成するために必要な操作の最小数


同じ長さの2つの文字列があるとすると、文字を削除せずに、2つの文字列のアナグラムを作成するために必要な最小限の変更を見つける必要があります。アナグラムは、同じ文字セットを持つ2つの文字列です。 2つの文字列が「HELLO」であり、ここで「WORLD」が必要な変更の数が3であると仮定します。この場合、3つの文字が異なります。

考え方は単純です。最初の文字列の各文字の頻度を見つけてから、2番目の文字列を調べ、2番目の文字列の文字が周波数配列に存在する場合は、頻度の値を減らします。頻度の値が0未満の場合は、最終カウントを1増やします。

#include <iostream>
using namespace std;
int countAlteration(string str1, string str2) {
   int count = 0;
   int frequency[26];
   for (int i = 0; i < 26; i++){
      frequency[i] = 0;
   }
   for (int i = 0; i < str1.length(); i++)
   frequency[str1[i] - 'A']++;
   for (int i = 0; i < str2.length(); i++){
      frequency[str2[i] - 'A']--;
      if (frequency[str2[i] - 'A'] < 0)
      count++;
   }
   return count;
}
int main() {
   string s1 = "HELLO", s2 = "WORLD";
   cout << "Number of required alteration: " << countAlteration(s1, s2);
}

出力

Number of required alteration: 3

  1. Pythonで2つの文字列を等しくするために必要な前処理移動の最小数を見つけます

    同じ長さで小文字のみの2つの文字列PとQがあるとすると、以下の操作を適用した後、文字列Pを文字列Qと等しくするために必要な、文字列Pの前処理移動の最小数をカウントする必要があります- 任意のインデックスiを選択し、文字piとqiを入れ替えます。 任意のインデックスiを選択し、文字piとpn – i –1を入れ替えます。 任意のインデックスiを選択し、文字qiとqn – i –1を入れ替えます。 注 −範囲内のiの値(0≤i

  2. Python 3.xでのCounter()の使用。 2つの文字列のアナグラムを作成するための最小限の文字削除を見つける

    この記事では、Python 3.xのcounter()関数を使用して文字列をパングラムにする方法について学習します。またはそれ以前。そのために、入力文字列から任意の文字を削除できます。また、文字列をアナグラムにするために削除する必要のあるそのような文字の数もわかります。 2つの文字列は、同じ種類のアルファベットがランダムな順序で含まれている場合、互いにアナグラムであると言われます。 counter()メソッドは、Pythonで使用可能なコレクションモジュールにあります。前提条件は、コレクションモジュールをインポートしてcounter()関数を使用することです。 アルゴリズム 1. Conv