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

Pythonの単語のリストにいくつの異なるローテーショングループがあるかを見つけるためのプログラム


すべての固有の回転を保持する文字列の回転グループがあるとします。入力が「567」の場合、これは「675」と「756」に回転でき、それらはすべて同じ回転グループにあります。文字列の単語のリストがある場合は、各単語をローテーショングループでグループ化し、グループの総数を見つける必要があります。

したがって、入力がwords =["xyz"、 "ab"、 "ba"、 "c"、 "yzx"]の場合、3つの回転グループがあるため出力は3になります-["xyz"、 "yzx"]、["ab"、 "ba"]、["c"]。

これを解決するには、次の手順に従います-

  • s:=新しいセット
  • ct:=0
  • 単語のiごとに、
    • 私がsにいない場合は、
      • ct:=ct + 1
    • 0からiのサイズの範囲のjについては、
      • temp:=iの部分文字列[インデックスjから最後まで]iの部分文字列を連結[最初からjまで])
      • tempをsに挿入
  • return ct

理解を深めるために、次の実装を見てみましょう-

class Solution:
   def solve(self, words):
      s=set()
      ct=0
      for i in words:
         if i not in s:
            ct+=1
         for j in range(len(i)):
            s.add(i[j:]+i[:j])
      return ct
ob = Solution()
print(ob.solve(["xyz", "ab", "ba", "c", "yzx"]))

入力

["xyz", "ab", "ba", "c", "yzx"]

出力

3

  1. リストの累積合計を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l):    new = []    cumsum = 0    for element in l:       cumsum += element       new.append(cumsum) &

  2. 配列ローテーション用のPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −テキストとパターンが与えられた場合、パターンのすべての出現とその順列(またはアナグラム)をテキストで印刷する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # maximum value MAX = 300 # compare def compare(arr1, arr2):    for i in range(MAX):       if arr1[i] != arr2[i]:       &nbs