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

Pythonで指定された文字を使用して作成できる最長の長さを見つけるプログラム


単語と呼ばれる文字列と文字と呼ばれる別の文字列のリストがあるとすると、文字の文字から形成できる単語の最長の文字列の長さを見つける必要があります。単語を形成できない場合は、0を返します。ここでは文字を再利用できません。

したがって、入力がwords =["dog"、 "cat"、 "rat"、 "bunny"、 "lion"、 "bat"]、letters ="gabctnyu"の場合、出力は3になります。 「猫」または「バット」という単語を作成できるため、最大長は3です。

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

  • ref:=文字とその頻度を含む地図
  • max:=0
  • 単語内の各単語について、
    • w:=単語の文字とその頻度を含む地図
    • l:=単語のサイズ
    • カウンター:=0
    • wのkごとに、
      • w [k] <=ref [k]の場合、
        • カウンター:=カウンター+ 1
      • それ以外の場合、
        • ループから抜け出す
    • l> maxおよびwのサイズがcounterと同じである場合、
      • max:=l
  • 最大値を返す

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

from collections import Counter
class Solution:
   def solve(self, words, letters):
      ref = Counter(letters)
      max = 0
      for word in words :
         w = Counter(word)
         l = len(word)
         counter = 0
         for k in w :
            if w[k] <= ref[k]:
               counter+=1
               pass
            else :
               break
               if l > max and len(w) == counter:
                  max = l
         return max
ob = Solution()
words = ["dog", "cat", "rat", "bunny", "lion", "bat"]
letters = "gabctnyu" print(ob.solve(words, letters))

入力

["dog", "cat", "rat", "bunny", "lion", "bat"], "gabctnyu"

出力

3

  1. Pythonのn-aryツリーで最長のパスの長さを見つけるプログラム

    各アイテムが保持しているエッジリスト(u、v)があり、uがvの親であることを表しているとします。ツリー内で最も長いパスの長さを見つける必要があります。パスの長さは、1+そのパス内のノードの数です。 したがって、入力が次のような場合 パスが[1、4、5、7]であり、合計4つのノードがあるため、出力は5になります。したがって、パスの長さは1 + 4=5です。 これを解決するには、次の手順に従います- g:=指定されたエッジリストからのグラフの隣接リスト d:=新しい地図 関数bfs()を定義します。これには時間がかかります d [o]:=1 f:=o q:=[o]

  2. Pythonを使用して同じxまたはy座標を持つ最も近い点を見つけるプログラム

    ptsと呼ばれる配列で与えられたポイントのセットがあると仮定します。現在の場所である別のポイント(x、y)もあります。有効なポイントを、現在のポイントと同じx座標または同じy座標を共有するポイントとして定義しています。現在の場所(x、y)からマンハッタン距離が最小の有効なポイントのインデックスを返す必要があります。複数のポイントがある場合は、インデックスが最小の有効なポイントを返します。 (注:2点(a、b)と(p、q)の間のマンハッタン距離は| a --p | + | b--q|です。 したがって、入力がpts =[(1,2)、(3,1)、(3,4)、(2,3)、(4,4)] pt =(2