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

Pythonで文字列をトリミングすることで作成できる回文数を見つけるためのプログラム


文字列sがあるとすると、sの左側と右側をトリミングして、回文を取得する方法をいくつか見つける必要があります。

したがって、入力がs ="momo"の場合、出力は6になります。たとえば、["mom"、 "omo"、 "o"、 "o"、 "m"、 "m"、 " o ")

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

  • 関数expand()を定義します。これにはi、j、sが必要です

  • c:=0

  • i> =0およびj

    • i:=i − 1、j:=j + 1

    • c:=c + 1

  • cを返す

  • メインの方法から、次のようにします

  • c:=0

  • 0からsのサイズの範囲のiの場合、実行します

    • c:=c + Expand(i、i、s)

    • c:=c + Expand(i、i + 1、s)

  • cを返す

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

def expand(i, j, s):
   c = 0
   while i >= 0 and j < len(s) and s[i] == s[j]:
      i −= 1
      j += 1
      c += 1
   return c
class Solution:
   def solve(self, s):
      c = 0
      for i in range(len(s)):
         c += expand(i, i, s)
         c += expand(i, i + 1, s)
      return c
ob = Solution()
s = "momo"
print(ob.solve(s))

入力

"momo"

出力

6

  1. 可能なBSTの数を見つけるプログラムは、Pythonのn個の異なるノードを使用して生成できます

    数nがあるとします。 [1,2、...、n]のような数がある場合、これらのn個の値を使用して形成できるBSTの数を数える必要があります。答えが大きすぎる場合は、結果を10 ^ 9+7で変更します。 したがって、入力がn =3の場合、出力は14になります。 これを解決するために、次の手順に従います a:=値が[0、1]のリスト m:=10 ^ 9 + 7 max_n:=1000 2からmax_n+1の範囲のkについては、 (1 +リストのすべての要素の合計(a [i] * a [k --i] for all i in range(1、k)))modmをaの最後に挿入します

  2. Pythonで1つの文字列を他の文字列のサブ文字列にするために必要な最小数の操作を見つけるプログラム

    2つの文字列sとtがあるとすると、sがtをsの部分文字列にするために必要な操作の最小量を見つける必要があります。これで、各操作で、s内の任意の位置を選択し、その位置の文字を他の任意の文字に変更できます。 したがって、入力がs =abbpqr、t =bbxyの場合、サブストリング bbpqを取得して、pをxに、qをに変更できるため、出力は2になります。 y。 これを解決するには、次の手順に従います- k:=tのサイズ、n:=sのサイズ ans:=10 ^ 10 0からn-kの範囲のiの場合、do ss:=s[インデックスiからi+k-1へ]の部分文字列 ans:=最小のans