提供された文字列がPythonの同じ位置にある文字によって異なるかどうかを調べるプログラム
同じ長さの複数の文字列を含む配列が提供されているとします。提供された文字列のいずれか2つが、同じ位置で1文字だけ異なるかどうかを確認する必要があります。この違いが存在する場合はtrueを返し、そうでない場合はfalseを返します。
したがって、入力がdict =['pqrs'、'prqs'、'paqs']のような場合、出力はTrueになります。入力にリストされている文字列はすべてインデックス1が異なるため、生成される出力はTrueです。したがって、2つのペアを取得すると、同じ位置に違いが生じます。
これを解決するには、次の手順に従います-
-
見た:=新しいセット
-
dictの各単語について、実行します
-
単語の各インデックスiと文字cについて、実行します
-
masked_word:=word[インデックス0からiまで]+'。' +単語[インデックスi+1から文字列の終わりまで]
-
masked_wordがseensに存在する場合、
-
Trueを返す
-
-
それ以外の場合
-
見た目に(masked_word)を追加
-
-
-
-
Falseを返す
例(Python)
理解を深めるために、次の実装を見てみましょう-
def solve(dict): seens = set() for word in dict: for i, c in enumerate(word): masked_word = word[:i] + '.' + word[i+1:] if masked_word in seens: return True else: seens.add(masked_word) return False print(solve(['pqrs', 'prqs', 'paqs']))
入力
['pqrs', 'prqs', 'paqs']
出力
True
-
グラフがPythonのすべての人によってトラバース可能かどうかを確認するプログラム
0からn-1までの番号が付けられたn個の頂点を含むグラフが与えられたとします。グラフは無向であり、各エッジには重みがあります。グラフには3種類の重みを設定でき、各重みは特定のタスクを示します。グラフをトラバースできるのは、ジャックとケーシーの2人です。エッジの重みが1の場合、ジャックはグラフをトラバースできます。重みが2の場合、ケーシーはグラフをトラバースできます。エッジの重みが3の場合、両方がグラフをトラバースできます。グラフを両方でトラバース可能にするために必要なエッジをすべて削除する必要があります。ジャックとケーシー。グラフをトラバース可能にするために削除するエッジの数を返します。トラバ
-
Pythonで1行の可能な位置の数を見つけるプログラム
数n、pおよびqがあるとします。ここで、n人の列に並んでいると仮定します。自分がどのポジションにいるのかはわかりませんが、前に少なくともp人、後ろに最大q人いることはわかっています。可能なポジションの数を見つける必要があります。 したがって、入力がn =10、p =3、q =4の場合、出力は5になります。これは、10人がいて、少なくとも3人が前にいて、最大で4人が後ろにいるためです。したがって、インデックス[0、1、2、3、4]に立つことができます。たとえば、インデックス0では、9人が前に、0人が後ろにいます。 解決策は簡単です。q+1とn-pの最小値を返します 理解を深めるために、次の