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

Pythonで連結したときに回文を形成するまでS1の接頭辞とS2の接尾辞が続くようなインデックスiを見つけます


同じ長さの2つの文字列S1とS2があるとすると、S1[0…i]とS2[i+1…n-1]が与えるようなインデックスiを見つける必要があります。それらが一緒に連結されたときの回文。不可能な場合は、-1を返します。

したがって、入力がS1 ="pqrsu"、S2 ="wxyqp"の場合、出力はS1 [0..1] ="pq"、S2 [2..n-1]="ypqとして1になります。 "、次にS1 + S2 =" pqyqp "は、回文であることを示します。

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

  • n:=str1のサイズ

  • str:=空白の文字列

  • 0からnの範囲のiの場合、実行

    • str:=str concatenate str1 [i]

    • temp:=空白の文字列

    • i + 1からnの範囲のjについては、次のようにします

      • temp:=temp concatenate str2 [j]

    • isPalindrome(str concatenate temp)がtrueの場合、

      • iを返す

  • -1を返す

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

def isPalindrome(s):
   if s == s[::-1]:
      return True
   return False
def find_index(str1, str2):
   n = len(str1)
   str = ""
   for i in range(n):
      str = str + str1[i]
      temp = ""
      for j in range(i + 1, n):
         temp += str2[j]
      if (isPalindrome(str + temp)):
         return i
   return -1
str1 = "pqrsu"
str2 = "wxyqp"
print(find_index(str1, str2))

入力

"pqrsu", "wxyqp"

出力

1

  1. Pythonでgcd(N ^ M、N&M)が最大になるような正の数Mを見つけます

    数Nがあるとすると、gcd(N ^ M、N&M)が可能な限り大きく、m

  2. Pythonでパターンを見つけて置換する

    単語のリストとパターンがあり、単語内のどの単語がパターンに一致するかを見つける必要があるとします。ここで、文字pの順列が存在する場合、単語はパターンに一致するため、パターン内のすべての文字xをp(x)に置き換えた後、ターゲット単語を取得します。与えられたパターンに一致する単語のリストを見つける必要があります。 たとえば、入力が[abc、 deq、 mee、 aqq、 dkd、 ccc]のようで、パターンが abbの場合、出力は[meeになります。 、「aqq」]、ここでmeeとaqqはパターン「abb」のスタイルと一致しています。ただし、「ccc」は順列ではないため、パターンではありません。