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

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


この記事では、Python 3.xのcounter()関数を使用して文字列をパングラムにする方法について学習します。またはそれ以前。そのために、入力文字列から任意の文字を削除できます。また、文字列をアナグラムにするために削除する必要のあるそのような文字の数もわかります。

2つの文字列は、同じ種類のアルファベットがランダムな順序で含まれている場合、互いにアナグラムであると言われます。

counter()メソッドは、Pythonで使用可能なコレクションモジュールにあります。前提条件は、コレクションモジュールをインポートしてcounter()関数を使用することです。

アルゴリズム

1. Conversion of input string into a dictionary type having characters as
keys and their frequency as values using Counter(inp_str) available in
the collections module.
2. Counting the total number of keys and counting the number of keys in
common to both dictionaries converted from input strings.
3. If no common keys are detected this means there is a need for removal
of (sum of the length of both dictionaries) characters from both the
input strings.
4. otherwise (max(length of both dictionaries) – number of Common keys
available ) will give the required number of characters to be removed

collections.Counter インタプリタによる文字の自動カウントを確実にするための辞書サブクラスです。実際に部分文字列を作成したり、それらがアナグラムであるかどうかを手動で確認したりする必要はありません。

# two strings become anagram
from collections import Counter
def convertAnagram(str_1, str_2):
   # conversion of strings to dictionary type
   dict_1 = Counter(str_1)
   dict_2 = Counter(str_2)
   keys_1 = dict_1.keys()
   keys_2 = dict_2.keys()
   # count number of keys in both lists of keys
   count_1 = len(keys_1)
   count_2 = len(keys_2)
   # convert pair of keys into set to find common keys
   set_1 = set(keys_1)
   commonKeys = len(set_1.intersection(keys_2))
   if (commonKeys == 0): # no common things found i.e. all are distinct
      return (count_1 + count_2)
   else: # some elements are already matching in input
      return (max(count_1, count_2)-commonKeys)
str_1 ='Tutorials'
str_2 ='sTutalori'
str_3='Point'
print (convertAnagram(str_1, str_2))
print (convertAnagram(str_3, str_2))

出力

0
6

結論

この記事では、アナグラムの関係Python 2.xを維持するために必要な文字数を数えることで、2つの文字列アナグラムを相互に作成する方法を学びました。必要です。


  1. Pythonを使用して2つのプロットを並べて作成するにはどうすればよいですか?

    subplot(row、col、index)メソッドを使用すると、図をrow * colの部分に分割し、インデックスの位置に図をプロットできます。次のプログラムでは、1つの図に2つの図を作成します。 ステップ numpyを使用してx、y1、y2ポイントを作成します。 nrows =1、ncols =2、index =1の場合、subplot()メソッドを使用して、現在の図にサブプロットを追加します。 plot()メソッドを使用して、xポイントとy1ポイントを使用して線をプロットします。 plt.title()、plt.xlabel()、およびplt.ylabel()メソ

  2. 2つの文字列から珍しい単語を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B):    # count    count = {}    # insert in A    for word in A.split():       count[word] = coun