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

Pythonでパリンドロームを作成するために単語を連結できるいくつかの方法を見つけるためのプログラム


個別の単語のリストがあるとすると、指定された単語のリストから2つの異なる単語を連結して、回文を作成するためのさまざまな方法を見つける必要があります。

したがって、入力がwords =["time"、 "emit"、 "mo"、 "m"]の場合、出力は3になり、 "timeemit"、 "emittime"、および"mom"を作成できます。 。

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

  • res:=0

  • ln:=配列内の単語数

  • 0から1の範囲のkの場合、実行

    • 0からln− 1の範囲のiの場合、実行

      • i +1からln− 1の範囲のjの場合、do

        • res:=res +(words[i]がwords[j]を連結する場合は1、それ以外の場合は0)

    • 単語:=逆順の単語

  • 解像度を返す

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

class Solution:
   def solve(self, words):
      def is_palindrome(w1, w2):
         w3 = w1 + w2
         return w3 == w3[::−1]
      res = 0
      ln = len(words)
      for k in range(2):
         for i in range(ln):
            for j in range(i + 1, ln):
               res += is_palindrome(words[i], words[j])
            words = words[::−1]
      return res
ob = Solution()
words = ["time", "emit", "mo", "m"]
print(ob.solve(words))

入力

["time", "emit", "mo", "m"]

出力

3

  1. Pythonでメッセージをデコードできるいくつかの方法を見つけるためのプログラム

    a =1、b =2、...z =26のようなマッピングがあり、エンコードされたメッセージメッセージ文字列があるとすると、デコードできる方法の数を数える必要があります。 したがって、入力がmessage =222の場合、出力は3になります。これは、bbb、bv、vbの3つの方法でデコードできるためです。 これを解決するには、次の手順に従います- memo:=メッセージサイズ+1と同じサイズの0のリスト memo [0]:=1 memo [1]:=1(message [0]が「0」と同じでない場合)それ以外の場合は0 2からメッセージのサイズまでの範囲のiの場合、実

  2. 作成できる文字列の数を見つけるプログラム。ここで、「a」は「a」または「b」であり、「b」はPythonでは「b」のままです。

    「a」と「b」だけの文字列sがあるとします。 「a」は「a」のままにすることも「b」に変えることもできますが、「b」を変更することはできません。作成できる一意の文字列の数を見つける必要があります。 したがって、入力がs =baabのような場合、これらの文字列を作成できるため、出力は4になります-[baab、 babb、 bbab、 bbbb] これを解決するには、次の手順に従います- counts:=sの「a」の頻度 2^カウントを返す 理解を深めるために、次の実装を見てみましょう- 例 class Solution:    def solve(self, s