Pythonで各文字が最大で1つの部分に表示されるリストの各パーティションのサイズを見つけるプログラム
小文字の文字列sがあるとすると、sをできるだけ多くの部分に分割して、各文字が最大で1つの部分に表示され、パーティションのサイズをリストとして見つけることができます。
したがって、入力がs ="momoplaykae"の場合、文字列が["momo"、 "p"、 "l"、 "に分割されるため、出力は[4、1、1、4、1]になります。 ayka "、"e"]。
これを解決するには、次の手順に従います-
-
count:=s内の文字とその出現を含むマップ
-
out:=新しいリスト、stk:=空のスタック
-
長さ:=0
-
sの各文字について、実行します
-
count [char]:=count [char]-1
-
長さ:=長さ+ 1
-
count [char]が0と同じでないか、stkが空でない場合は、実行してください
-
count [char]が0と同じでない場合、
-
charをstkにプッシュ
-
ループから出てきます
-
-
stkが空でなく、count [top of stk]が0と同じ場合、
-
stkからポップ
-
-
それ以外の場合
-
ループから出てきます
-
-
-
stkが空で、count [char]が0と同じ場合、
-
アウト後に長さを挿入
-
長さ:=0
-
-
-
戻る
例
理解を深めるために、次の実装を見てみましょう-
from collections import Counter class Solution: def solve(self, s): count = Counter(s) out = [] stk = [] length = 0 for char in s: count[char] -= 1 length += 1 while count[char] != 0 or stk: if count[char] != 0: stk.append(char) break if stk and count[stk[-1]] == 0: stk.pop() else: break if not stk and count[char] == 0: out += [length] length = 0 return out ob = Solution() s = "momoplaykae" print(ob.solve(s))
入力
"momoplaykae"
出力
[4, 1, 1, 4, 1]
-
リストの累積合計を見つけるPythonプログラム
この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが与えられたので、累積合計でリストを作成する必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # cumulative sum def Cumulative(l): new = [] cumsum = 0 for element in l: cumsum += element new.append(cumsum) &
-
リスト内で最大数を見つけるPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 与えられたリスト入力では、与えられたリストの中で最大の数を見つける必要があります。 ここでは、2つのアプローチについて説明します 並べ替え手法の使用 組み込みのmax()関数を使用する アプローチ1-組み込みのsort()関数を使用する 例 list1 = [18, 65, 78, 89, 90] list1.sort() # main print("Largest element is:", list1[-1]) 出力 Largest element is: