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

Pythonでソートされた形式の文字列の回文部分文字列の数を検索します


小文字の文字列(すべてASCII文字)があるとすると、指定された文字列のすべての別個の連続した回文サブ文字列を見つける必要があります。

したがって、入力が「level」のような場合、7つのサブ文字列['level'、'eve'、'l'、'e'、'v'、'e'、'l'があるため、出力は7になります。 ]。

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

  • N:=26

  • n:=strの長さ

  • 合計:=0

  • my_map:=サイズNのリストで、0で埋めます

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

    • my_map [A​​SCII of(str [i])-ASCII of('a')]:=my_map [A​​SCII of(str [i])-ASCII of('a')] + 1

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

    • my_map [i]がゼロ以外の場合、

      • 合計:=合計+(my_map [i] *(my_map [i] + 1)/ 2)

  • 合計を返す

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

N = 26
def all_palindrome_substr_count(str):
   n = len (str)
   sum = 0
   my_map = [0] * N
   for i in range(n):
      my_map[ord(str[i]) - ord('a')] += 1
  for i in range(N) :
      if (my_map[i]):
         sum += (my_map[i] * (my_map[i] + 1) // 2)
   return sum
str = "level"
print (all_palindrome_substr_count(str))

入力

"level"

出力

7

  1. 最も出現する文字とその数を見つけるPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 入力文字列が与えられた場合、最も出現する文字とその数を見つける必要があります。 アプローチ 文字列をキーとして、頻度を値として持つCounterメソッドを使用して辞書を作成します。 文字の最大出現回数、つまり値を見つけて、そのインデックスを取得します。 次に、以下の実装を見てみましょう- 例 from collections import Counter    def find(input_):    # dictionary &

  2. Pythonで文字列内のn番目の部分文字列を見つける方法は?

    最大n+1分割で部分文字列を分割することにより、文字列内でn番目に出現する部分文字列を見つけることができます。結果のリストのサイズがn+1より大きい場合は、サブストリングがn回以上出現することを意味します。そのインデックスは、元の文字列の長さ-最後に分割された部分の長さ-部分文字列の長さという簡単な式で見つけることができます。 例 def findnth(string, substring, n):     parts = string.split(substring, n + 1)     if len(parts) <= n + 1: &nbs