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"
-
Pythonで文字列内の最長の反復配列を見つける方法は?
defaultdictを使用して、入力文字列の各位置から始まる各サブ文字列を集計できます。 getsubsメソッドは、呼び出されるたびに小さいサブ文字列を生成するジェネレータメソッドです。 例 from collections import defaultdict def getsubs(loc, s): substr = s[loc:] i = -1 while(substr): yield substr &nb
-
Pythonで文字列の長さを取得するにはどうすればよいですか?
Pythonには、複合オブジェクトの長さを指定するlen()というメソッドがあります。文字列の長さを取得するには、文字列をlen()呼び出しに渡すだけです。たとえば、 print(len('abcdefghijklmnopqrstuvwxyz')) 出力 26