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

Pythonでパターンを太字のタグで囲むプログラム?


テキストとパターンと呼ばれる文字列のリストがあるとすると、指定されたパターンの任意の文字列に一致するテキスト内のすべてのサブ文字列がでラップされるエンボールド関数を定義する必要があります。 タグ。 2つのパターンが隣接または重複している場合は、それらを1つのタグにマージする必要があります。

したがって、入力がtext ="thisissampleline" pattern =["this"、 "issam"、 "sample"]の場合、出力は "a bc d ef g "、bcとefはテキストと一致し、タグとタグで囲まれているため。

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

  • n:=テキストのサイズ

  • 太字:=サイズnのリスト、False値で埋める

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

    • パターン内の各pについて、実行します

      • テキストのサブストリング[インデックスiから終了まで]がpで始まる場合、

        • 0からpのサイズの範囲のjについては、次のようにします

          • bold [i + j]:=True

  • ans:=空白の文字列

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

    • bold [i]および(iが0と同じか、bold [i-1]がfalseの場合)、

      • ans:=ans concatente ""

    • ans:=ans + text [i]

    • bold [i]および(iがn-1と同じ、またはbold [i + 1]がfalseの場合)、

      • ans:=ans concatenate ""

  • ansを返す

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

class Solution:
   def solve(self, text, patterns):
      n = len(text)
      bold = [False] * n
      for i in range(n):
         for p in patterns:
            if text[i:].startswith(p):
               for j in range(len(p)):
                  bold[i + j] = True

      ans = ""
      for i in range(n):
         if bold[i] and (i == 0 or not bold[i - 1]):
            ans += ""
          ans += text[i]
         if bold[i] and (i == n - 1 or not bold[i + 1]):
             ans += ""
      return ans

ob = Solution()
text = "thisissampleline"
patterns = ["this", "ssam", "sample"]
print(ob.solve(text, patterns))

入力

"thisissampleline", ["this", "ssam", "sample"]

出力

<b>this</b>i<b>ssample</b>line

  1. ソートされたリストに要素を挿入するPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、ソートされた順序を変更せずにリストに要素を挿入する必要があります 以下で説明するように、2つのアプローチがあります- アプローチ1:強引な方法 例 def insert(list_, n):    # search    for i in range(len(list_)):       if list_[i] > n:          index = i

  2. numpyを使用してn*nのチェックボードパターンを出力するPythonプログラム。

    nの値が与えられた場合、私たちのタスクはnxn行列のチェックボードパターンを表示することです。 numpyでは、初期値を使用して配列を作成するためのさまざまなタイプの関数を使用できます。 NumPyは、Pythonでの科学計算の基本的なパッケージです。 アルゴリズム Step 1: input order of the matrix. Step 2: create n*n matrix using zeros((n, n), dtype=int). Step 3: fill with 1 the alternate rows and columns using a slicing tech