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

PythonにK回以上繰り返される長さmのパターンをチェックするプログラムが存在するかどうか


正の値の配列numがあるとすると、k回以上繰り返される長さmのパターンを見つける必要があります。ここで、パターンは、1つ以上の値で構成され、複数回繰り返される重複しないサブ配列(連続)です。パターンは、その長さと繰り返しの数によって定義されます。 k回以上繰り返される長さmのパターンが存在するかどうかを確認する必要があります。

したがって、入力がnums =[3,5,1,4,3,1,4,3,1,4,3,9,6,1]、m =3、k =2の場合、出力は3回存在するパターン[1,4,3]があるため、Trueになります。

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

  • 0からnums-1のサイズのiの場合、実行します

    • sub1:=インデックスiから(i + m * k)-1までのnumsのサブ配列

    • sub2:=インデックスiから(i + m-1)までのnumのk個の連続したサブ配列

    • sub1がsub2と同じ場合、

      • Trueを返す

  • Falseを返す

例(Python)

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

def solve(nums, m, k):
   for i in range(len(nums)):
      sub1 = nums[i:i+m*k]
      sub2 = nums[i:i+m]*k
      if sub1 == sub2:
         return True
   return False

nums = [3,5,1,4,3,1,4,3,1,4,3,9,6,1]
m = 3
k = 2
print(solve(nums, m, k))

入力

[3,5,1,4,3,1,4,3,1,4,3,9,6,1], 3, 2

出力

True

  1. Pythonで奇数の長さのサイクルがグラフにあるかどうかを確認するプログラム

    無向グラフがあり、その中に奇数の長さのサイクルが見つかるかどうかを確認する必要があるとします。 したがって、入力がadj_list =[[1、2]、[0、3、4]、[0、3、4]、[1、2、4]、[1、2、3]] [0、1、3、4、2]、[1、3、4]、[2、3、4]のような奇数の長さのサイクルがあるため、出力はTrueになります。 これを解決するには、次の手順に従います- 関数dfs()を定義します。これはノードを取ります、私 ノードがパス内にある場合、 (i --path [node])が奇数の場合はtrueを返します ノードにアクセスした場合、 Falseを返す

  2. 指定された文字列がキーワードであるかどうかを確認するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数値が与えられているので、その数値が2の累乗であるかどうかを確認する必要があります。 キーワードは、特定の用途で任意の言語によって予約されている特別な単語であり、識別子として使用することはできません。 指定された文字列がキーワードであるかどうかを確認するために、以下で説明するようにキーワードモジュールを使用しました。 例 # keyword module import keyword # Function def isKeyword(word) :    # list of all