最長共通接頭辞(Longest Common Prefix)のアルゴリズム


  1. 水平スキャン法: この方法では、最初の文字列を基準として、他のすべての文字列をスキャンします。各文字列の同じ位置にある文字を比較し、一致しない場合は処理を終了します。一致した場合は、共通接頭辞にその文字を追加します。この処理を繰り返し行い、最長共通接頭辞を見つけます。

    Pythonでの実装例:

    def longest_common_prefix(strings):
       if not strings:
           return ""
       prefix = strings[0]
       for string in strings[1:]:
           while not string.startswith(prefix):
               prefix = prefix[:-1]
               if not prefix:
                   return ""
       return prefix
  2. 垂直スキャン法: この方法では、各文字列の同じ位置にある文字を比較します。一致しない場合は処理を終了します。一致した場合は、共通接頭辞にその文字を追加します。この処理を繰り返し行い、最長共通接頭辞を見つけます。

    Pythonでの実装例:

    def longest_common_prefix(strings):
       if not strings:
           return ""
       prefix = ""
       for chars in zip(*strings):
           if len(set(chars)) == 1:
               prefix += chars[0]
           else:
               break
       return prefix

これらは最も一般的な最長共通接頭辞のアルゴリズムですが、他にもいくつかの方法があります。これらのコード例を使って、自分のプロジェクトや問題に応じて適切なアルゴリズムを選択してください。