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

Pythonで一意の文字の連結文字列の長さを見つけるプログラム?


文字列の単語のリストがあるとします。各文字が一意になるように、単語のサブシーケンスを連結して作成された文字列を作成する必要があります。最終的に、そのような最長の連結の長さを見つける必要があります。

したがって、入力がwords =["xyz"、 "xyw"、 "wab"、 "cde"]の場合、重複する文字が含まれているため単語を選択できないため、出力は9になります。

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

ans:=0

関数recur()を定義します。これにはi:=0、cur:=空白の文字列が必要です

if i is same as size of words , then
   ans := maximum of ans and size of cur
   return
recur(i + 1, cur)
if all characters in words[i] are unique and all characters in (cur + words[i]) are unique, then
   recur(i + 1, cur + words[i])
From the main method do the following:
recur()
return ans

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

class Solution:
   def solve(self, words):
      ans = 0

      def is_all_unique(s):
         return len(set(s)) == len(s)

      def recur(i=0, cur=""):
         nonlocal ans
         if i == len(words):
            ans = max(ans, len(cur))
         return

         recur(i + 1, cur)
         if is_all_unique(words[i]) and is_all_unique(cur + words[i]):
            recur(i + 1, cur + words[i])

      recur()
      return ans

ob = Solution()
words = ["xyz", "xyw", "wab", "cde"]
print(ob.solve(words))

入力

["xyz", "xyw", "wab", "cde"]

出力

9

  1. 文字列にすべての一意の文字が含まれているかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 sring入力が与えられた場合、文字列にすべての一意の文字が含まれているかどうかを確認する必要があります。 アプローチ ブール値の配列を作成します。ここで、インデックスiの変数フラグは、アルファベットの文字iが文字列に含まれているかどうかを示します。 この文字に2回目に遭遇したとき、文字列文字は一意ではなくなったため、すぐにfalseを返すことができます。 文字列の長さがアルファベットに表示される一意の文字数の値を超える場合も、falseを返すことができます。 文

  2. 文字列内のミラー文字を検索するPythonプログラム

    ユーザー入力文字列とその位置からの位置を指定すると、文字をアルファベット順に文字列の長さまでミラーリングする必要があります。この操作では、「a」を「z」に、「b」を「y」に、「c」を「x」に、「d」を「w」に変更します。これは、最初の文字が最後になることを意味します。オン。 Inpu t: p = 3 Input string = python Output : pygslm アルゴリズム Step 1: Input the string and position from we need to mirror the characters. Step 2: Creating a s