Python で繰り返し文字のない最長部分文字列

Rana Hasnain Khan 2024年2月15日
  1. Python で繰り返し文字のない最長部分文字列
  2. While ループを使用して Python で最長の部分文字列を取得する
  3. For ループと If-Else ステートメントを使用して Python で最長の部分文字列を取得する
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"))

出力:

Python で while ループを使用した最長部分文字列

上記の例からわかるように、可能な限り長い部分文字列の長さは 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"))

出力:

Python で for ループを使用した最長部分文字列

上記の解決策からわかるように、if-else ステートメントで for ループを使用して、文字列から最長の部分文字列を簡単に取得できます。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

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

関連記事 - Python String