Pythonで操作を適用した後、辞書式に最小の文字列を見つけるプログラム
数字のみの文字列sがあり、2つの値aとbもあるとします。次の2つの操作のいずれかを、s −
に何度でも任意の順序で適用できます。-
s(0-indexed)のすべての奇数位置のアイテムに「a」を追加します。数字が9の場合、何かを追加すると0に戻ります。
-
's'をbの位置だけ右に回転させます。
したがって、上記の操作をsに何度でも適用することで、辞書式順序で最小の文字列を見つける必要があります。
したがって、入力がs ="5323" a =9 b =2のような場合、出力は2050になります。
- 回転:「5323」
- 追加:「5222」
- 追加: "5121"
- 回転:「2151」
- 追加:「2050」
これを解決するには、次の手順に従います-
- 見た:=新しいセット
- deq:=1つの要素's'を持つ新しいキュー
- deqが空でない間は、
- curr:=deqの最初に削除された要素
- 見たセットにcurrを挿入
- ad:=currで特定の追加操作を実行する
- 広告が表示されない場合は、
- deqの最後に広告を挿入
- 表示されたセットに広告を挿入
- ro:=currで回転操作を実行する
- roが表示されていない場合は、
- deqの最後にroを挿入
- 見たセットにroを挿入
- 見たものの最小値を返す
例
理解を深めるために、次の実装を見てみましょう-
from collections import deque def add_(s,a): res = '' for idx, i in enumerate(s): if idx % 2 == 1: num = (int(i) + a) % 10 res += str(num) else: res += i return res def rotate_(s, b): idx = len(s)-b res = s[idx:] + s[0:idx] return res def solve(s, a, b): seen = set() deq = deque([s]) while deq: curr = deq.popleft() seen.add(curr) ad = add_(curr, a) if ad not in seen: deq.append(ad) seen.add(ad) ro = rotate_(curr, b) if ro not in seen: deq.append(ro) seen.add(ro) return min(seen) s = "5323" a = 9 b = 2 print(solve(s, a, b))
入力
"5323", 9, 2
出力
2050
-
2D配列でk番目に小さい要素を見つけるPythonプログラム
1つのn×nユーザー入力整数行列が与えられ、kの値。私たちのタスクは、2D配列でk番目に小さい要素を見つけることです。ここでは、Pythonでheapq mudule.Heapキュー(またはheapq)を使用します。 Pythonでは、「heapq」モジュールを使用して利用できます。 Pythonでのこのモジュールの手法は、最小のヒープ要素がポップされるたびに(min heap).nsmallest()メソッドを使用して、データフレームまたはシリーズからn個の最小値を取得します。 例 Input Array is:: 10 20 20 40 15 45 40 30 32 33 30 50
-
文字列内のミラー文字を検索するPythonプログラム
ユーザー入力文字列とその位置からの位置を指定すると、文字をアルファベット順に文字列の長さまでミラーリングする必要があります。この操作では、「a」を「z」に、「b」を「y」に、「c」を「x」に、「d」を「w」に変更します。これは、最初の文字が最後になることを意味します。オン。 Inpu t: p = 3 Input string = python Output : pygslm アルゴリズム Step 1: Input the string and position from we need to mirror the characters. Step 2: Creating a s