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

Pythonで同じ最初の文字の単語を持つ最長の連続するサブリストの長さを見つけるプログラム


単語と呼ばれる小文字のアルファベット文字列のリストがあるとします。各単語の最初の文字が同じ最初の文字を持つ、最も長い連続したサブリストの長さを見つける必要があります。

したがって、入力がwords =["she"、 "sells"、 "seashells"、 "on"、 "the"、 "sea"、 "shore"]の場合、出力は3で、最も長い連続したサブリストになります。 ["彼女"、 "売る"、"貝殻"]です。各単語の最初の文字は「s」です。

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

  • cnt:=1

  • maxcnt:=0

  • prev_char:=空白の文字列

  • 単語の単語ごとに、実行します

    • prev_charが空の場合、

      • prev_char:=単語の最初の文字

    • それ以外の場合、prev_charが単語の最初の文字と同じである場合、

      • cnt:=cnt + 1

    • それ以外の場合

      • prev_char:=単語の最初の文字

      • cnt:=1

    • maxcnt:=maxcntとcntの最大値

  • maxcntを返す

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

def solve(words):
   cnt = 1
   maxcnt = 0
   prev_char = ""
   for word in words:
      if prev_char == "":
         prev_char = word[0]
      elif prev_char == word[0]:
         cnt += 1
      else:
         prev_char = word[0]
         cnt = 1
      maxcnt = max(maxcnt, cnt)
   return maxcnt

words = ["she", "sells", "seashells", "on", "the", "sea", "shore"]
print(solve(words))

入力

["she", "sells", "seashells", "on", "the", "sea", "shore"]

出力

3

  1. Pythonで最大の合計を持つ連続したサブリストの合計を見つけるプログラム

    配列Aがあるとします。最大合計を持つ連続したサブリストを見つけ、その合計を返す必要があります。したがって、配列AがA =[-2,1、-3,4、-1,2,1、-5,4]のようである場合、合計は6になります。サブ配列は[4、-1になります。 2、1]。 これを解決するために、動的計画法のアプローチを使用してみます。 Aのサイズと同じ配列dpを定義し、0で埋めます dp [0]:=A [0] for i:=1からAのサイズ– 1 dp [i]:=最大dp [i – 1] +A[i]およびA[i] dpで最大値を返す 理解を深めるために、次の実装を見てみま

  2. Pythonで連続して厳密に増加するサブリストの長さを見つけるプログラム

    numsと呼ばれる数値のリストがあるとすると、リストから1つまたは0の要素を削除できるときに、連続する厳密に増加するサブリストの最大長を見つける必要があります。 したがって、入力がnums =[30、11、12、13、14、15、18、17、32]のような場合、リストから18を削除すると、[11、 12、13、14、15、17、32]これは最も長く、連続していて、厳密に増加するサブリストであり、その長さは7です。 これを解決するために、次の手順に従います- n:=numsのサイズ pre:=サイズnのリストと1で埋める 1からn-1の範囲のiの場合、実行 nums