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

PythonのWordBreakII


空でない文字列sとwordDictという辞書があるとします。この辞書には空でない単語のリストが含まれており、sにスペースを追加して、各単語が次のような文を作成します。有効な辞書の単語。そのような可能な文をすべて見つけなければなりません。 「appleraincoat」と辞書は[「app」、「apple」、「rain」、「coat」、「raincoat」]

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

  • マップメモを1つ作成する

  • 解決と呼ばれるメソッドを定義します。これには文字列とwordDictが必要です

  • sがnullの場合、空のリストを返します

  • メモにsがある場合、-

    • メモを返す

  • 配列を作成するret

  • 1からsのサイズまでの範囲のiの場合

    • インデックス0からi– 1までのsのサブストリングがwordDictに存在する場合、

      • ソルブのjの場合(iからendまでのsの部分文字列、wordDict)

      • p:=インデックス0からi – 1までのsの部分文字列で、スペースとjを連結してから、左右から余分なスペースをクリアします-

      • pをretに挿入

  • memo [s]:=ret

  • メモを返す

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

class Solution(object):
   def wordBreak(self, s, wordDict):
      self.memo = {}
      wordDict = set(wordDict)
      return self.solve(s,wordDict)
   def solve(self,s, wordDict):
      if not s:
         return ['']
      if s in self.memo:
         return self.memo[s]
      ret = []
      for i in range(1,len(s)+1):
         if s[:i] in wordDict:
            for j in self.solve(s[i:],wordDict):
               ret.append((s[:i] + " " + j).strip())
      self.memo[s] = ret
      return self.memo[s]

ob = Solution()
print(ob.wordBreak("appleraincoat",["app","apple","rain","coat","rain coat"]))

入力

"appleraincoat"
["app","apple","rain","coat","raincoat"]

出力

['apple rain coat', 'apple raincoat']

  1. PythonTkinterを使用した単語辞書

    この記事では、PyDictionaryとTkinterModuleを使用してGUIベースの辞書を作成します。 PyDictionaryは、意味のある翻訳、反意語、単語の同義語を取得するのに役立つPythonモジュールです。 WordNetを使用します 意味を取得するためのGoogle、翻訳のためのGoogle、類義語と反意語を取得するためのsynonym.com。 PyDictionaryは、BeautifulSoup、Requestsモジュールを依存関係として使用します。 アプリケーションを作成するには、まずpip install PyDictionaryを使用してこれらのモジュール

  2. Pythonを使用してWordCloudを作成する

    この問題では、いくつかのテキストを含むファイルがあります。これらのテキストと1つのマスキング画像からワードクラウドを作成する必要があります。プログラムは、単語の雲の画像を pngとして保存します フォーマット。 この問題を実装するには、Pythonのいくつかのライブラリを使用する必要があります。ライブラリはmatplotlib、wordcloud、numpy、tkinter、PILです。 これらのライブラリをインストールするには、次のコマンドに従う必要があります- ライブラリのセットアップ $ sudo pip3 install matplotlib $ sudo pip3 instal