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

Pythonで最も長い共通プレフィックス


配列に文字列のセットがあるとします。配列内の文字列の中から最長の共通プレフィックスを見つける必要があります。ここでは、すべての文字列が小文字の文字列であると想定します。また、共通のプレフィックスがない場合は、「」を返します。

したがって、文字列の配列が["school"、 "schedule"、 "Scotland"]のような場合、これらすべての文字列に存在するため、最長の共通プレフィックスは「sc」です。

これを解決するために、最初の文字列をcurrとして取得し、配列から各文字列を取得して文字ごとに読み取り、currと取得した文字列の間の文字を1つずつ確認します。それらが同じである場合は次の文字に進み、そうでない場合はループを中断し、一致した部分文字列としてcurrを更新します。

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

例(Python)

class Solution(object):
   def longestCommonPrefix(self, strs):
      """
      :type strs: List[str]
      :rtype: str
      """
      if len(strs) == 0:
         return ""
      current = strs[0]
      for i in range(1,len(strs)):
         temp = ""
         if len(current) == 0:
            break
         for j in range(len(strs[i])):
            if j<len(current) and current[j] == strs[i][j]:
               temp+=current[j]
            else:
               break
         current = temp
      return current
input_list = ["school","schedule","scotland"]
ob1 = Solution()
print(ob1.longestCommonPrefix(input_list))

入力

["school","schedule","scotland"]

出力

"sc"

  1. Pythonで文字列内の最長の反復配列を見つける方法は?

    defaultdictを使用して、入力文字列の各位置から始まる各サブ文字列を集計できます。 getsubsメソッドは、呼び出されるたびに小さいサブ文字列を生成するジェネレータメソッドです。 例 from collections import defaultdict def getsubs(loc, s):     substr = s[loc:]     i = -1     while(substr):         yield substr       &nb

  2. Pythonで文字列の長さを取得するにはどうすればよいですか?

    Pythonには、複合オブジェクトの長さを指定するlen()というメソッドがあります。文字列の長さを取得するには、文字列をlen()呼び出しに渡すだけです。たとえば、 print(len('abcdefghijklmnopqrstuvwxyz')) 出力 26