Python で繰り返し文字のない最長部分文字列
- Python で繰り返し文字のない最長部分文字列
-
While
ループを使用して Python で最長の部分文字列を取得する -
For
ループとIf-Else
ステートメントを使用して Python で最長の部分文字列を取得する
Python で部分文字列を作成する方法と、文字を繰り返さずに部分文字列を作成する方法を例を挙げて紹介します。
Python で繰り返し文字のない最長部分文字列
このチュートリアルでは、あなたの知識を高め、ループをさらに完璧にするユニークなことを学びます。 文字を繰り返さずに文字列から部分文字列を作成する方法を学びます。
部分文字列とは、文字列を複数の小さな部分に分割すると、その特定の文字列の部分文字列と呼ばれることを意味します。 同じアルファベットを繰り返さない最長の部分文字列を取得したい場合は、最長部分文字列法が非常に役立ちます。
このメソッドでは、完全な文字列を通過するループを使用し、各要素を 1つずつチェックして、元の文字列の繰り返されていない部分文字列を返します。
Python プログラミングでは、最長の部分文字列を取得する方法が多数あります。 これらの方法は非常に簡単で便利です。 それらについて詳しく説明します。
While
ループを使用して Python で最長の部分文字列を取得する
このメソッドのパラメーターとして object
を取るクラス GetLongestSubstring
を作成します。 このクラス内で 2つのパラメーターを取る Length
という関数を定義します。
指定された文字列から最長の部分文字列が見つかるまで、while
ループを実行します。
# python
class GetLongestSubstring(object):
def Length(self, x):
a = 0
b = 0
c = {}
sol = 0
while b < len(x):
if x[b] not in c or a > c[x[b]]:
sol = max(sol, (b - a + 1))
c[x[b]] = b
else:
a = c[x[b]] + 1
sol = max(sol, (b - a + 1))
b -= 1
b += 1
return sol
obj = GetLongestSubstring()
print(obj.Length("ABCDEFGABCGHIJKLMNO"))
出力:
上記の例からわかるように、可能な限り長い部分文字列の長さは 12 で、元の文字列の ABCGHIJKLMNO
部分文字列と同じです。
For
ループと If-Else
ステートメントを使用して Python で最長の部分文字列を取得する
for
ループを使用して同じシナリオを実現しようとします。 まず、以下に示すように、関数 GetLongestSubstring
を定義します。
この関数は、元の文字列を複数の部分文字列に変換し、部分文字列が一意かどうかを確認します。 以下に示すように、この関数は最長の部分文字列とその長さを返します。
# python
def GetLongestSubstring(x):
if len(set(x)) == len(x):
return len(x)
Substring = ""
StrLen = 1
for a in x:
if a not in Substring:
Substring = Substring + a
StrLen = max(StrLen, len(Substring))
else:
Substring = Substring.split(a)[1] + a
print(Substring)
return StrLen
print(GetLongestSubstring("ABCDEFGABCGHIJKLMNO"))
出力:
上記の解決策からわかるように、if-else
ステートメントで for
ループを使用して、文字列から最長の部分文字列を簡単に取得できます。
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn