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

Pythonですべての母音の最長の部分文字列を順番に検索するプログラム


英語の母音だけの文字列sがあるとすると、sの最も長い美しい部分文字列の長さを見つける必要があります。そのような部分文字列が見つからない場合は、0を返します。次の条件を満たす場合、文字列は美しいと言われます-

  • 5つの母音のそれぞれは、少なくとも1回は出現する必要があります。

  • 文字はアルファベット順に並べ替える必要があります

したがって、入力がs ="aaioaaaaeiiouuooaauu"の場合、サブストリングが美しい "aaaaeiiouu"であるため、出力は10になります。

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

  • 母音:=すべての母音のリスト['a'、'e'、'i'、'o'、'u']

  • l:=0、r:=0、最長:=0

  • l

    • 有効:=True

    • 母音の母音ごとに、実行します

      • valid:=validはtrueであり、(r

      • r

        • r:=r + 1

    • 有効がtrueの場合、

      • 最長:=最長の最大値および(r --l)

    • l:=r

  • 最長で戻る

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

def solve(s):
   vowels = ['a', 'e', 'i', 'o', 'u']
   l, r, longest = 0, 0, 0
   while (l < len(s)):
      valid = True
      for vowel in vowels:
         valid &= (r < len(s) and s[r] == vowel)
         while (r < len(s) and s[r] == vowel):
            r += 1
      if (valid):
         longest = max(longest, r - l)
      l = r
   return longest

s = "aaioaaaaeiiouuooaauu"
print(solve(s))

入力

"aaioaaaaeiiouuooaauu"

出力

10

  1. Pythonですべてのポイントを接続するための最小コストを見つけるためのプログラム

    (x、y)の形式のいくつかの点を持つpointsという配列があるとします。ここで、2つのポイント(xi、yi)と(xj、yj)を接続するコストは、それらの間のマンハッタン距離であり、式は| xi--xj|です。 + | yi--yj|。すべてのポイントを接続するための最小コストを見つける必要があります。 したがって、ここでの合計距離は(6 + 5 + 3 + 8)=22です。 これを解決するには、次の手順に従います- points_set:=範囲0からポイントのサイズ-1までの数値を保持する新しいセット ヒープ:=ペア(0、0)でヒープを作成します visited_node:

  2. Pythonですべての母音を含む部分文字列を検索する

    小文字のアルファベットの文字列があるとします。少なくとも一度はすべての母音を含む部分文字列を見つける必要があり、その部分文字列には子音がありません。 したがって、入力が「helloworldaeiouaieuonicestring」のような場合、出力は[aeiou、aeioua、aeiouai、aeiouaiu、eioua、eiouai、eiouaiu]になります。 これを解決するには、次の手順に従います- n:=sのサイズ 0からnの範囲のiの場合、実行 my_map:=新しいマップ iからnの範囲のjについては、次のようにします s [j]が母音でない場合