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

Pythonを使用して2つの文字列を分割して回文を作成するプログラム


長さが同じ2つの文字列aとbがあるとします。インデックスを選択し、その選択したインデックスで両方の文字列を分割して、aを2つの文字列に分割する必要があります。a_prefとa_suffここで、a =a_pref | a_suff、およびbを2つの文字列に分割します。b_pref| b_suff(|は連結演算子)ここで、b =b_pref+b_suff。 a_pref+b_suffまたはb_pref+a_suffが回文を形成するかどうかを確認します。 (分割は空の文字列である可能性があります)

したがって、入力がa ="pqrst" b ="turqp"のような場合、["pq"、 "rst"]のようなbと["tu"、 "rqp"のようなbを分割できるため、出力はTrueになります。 ]、したがって、a_prefをb_suffと結合すると、回文である「pqrqp」が得られます。

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

  • ペアのリストからの各ペア(x、y)について[(a、b)、(b、a)]、実行

    • i:=0、j:=xのサイズ-1

    • x[i]はy[j]と同じでi0、do

      • i:=i + 1

      • j:=j-1

    • midx:=インデックスiからjまでのxの部分文字列

    • midy:=インデックスiからjまでのyの部分文字列

    • midxが回文であるか、midyが回文である場合、

      • Trueを返す

  • Falseを返す

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

def solve(a, b):
   for x, y in [[a, b], [b, a]]:
      i, j = 0, len(x) - 1
      while x[i] == y[j] and i<len(x) and j>0:
         i += 1
         j -= 1
      midx = x[i:j+1]
      midy = y[i:j+1]
      if (midx == midx[::-1] or midy== midy[::-1]):
         return True
   return False

a = "pqrst"
b = "turqp"
print(solve(a, b))

入力

"pqrst", "turqp"

出力

True

  1. Pythonを使用して2つのプロットを並べて作成するにはどうすればよいですか?

    subplot(row、col、index)メソッドを使用すると、図をrow * colの部分に分割し、インデックスの位置に図をプロットできます。次のプログラムでは、1つの図に2つの図を作成します。 ステップ numpyを使用してx、y1、y2ポイントを作成します。 nrows =1、ncols =2、index =1の場合、subplot()メソッドを使用して、現在の図にサブプロットを追加します。 plot()メソッドを使用して、xポイントとy1ポイントを使用して線をプロットします。 plt.title()、plt.xlabel()、およびplt.ylabel()メソ

  2. 2つの文字列から珍しい単語を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 − 2つの文字列が与えられているので、与えられた文字列から珍しい単語を取得する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # uncommon words def find(A, B):    # count    count = {}    # insert in A    for word in A.split():       count[word] = coun