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

Pythonで最も近い連絡先から少なくともkの距離に立つことができるかどうかを確認するプログラム


文字列sと数値kがあるとします。これで、文字列内の各文字はドット('。')または'x'になります。ここで、ドットは空のスペースを示し、'x'は人を示します。私たちと私たちに最も近い人との間の距離が少なくともkになるように立つ位置を選択できるかどうかを確認する必要があります。 (ここでは、隣接する各インデックス間の距離は1です。)

したがって、入力がs ="x ... x .."、k =2の場合、s[2]またはs[6]に立つことができるため、出力はTrueになります。

これを解決するには、次の手順に従います-

  • pos:=s内のxの位置、存在しない場合、posは-1になります
  • posが-1またはpos>=kと同じ場合、
    • Trueを返す
  • last_x:=pos
  • dist_min:=2 * k-1
  • 無限ループを実行します。
    • next_x:=インデックスlast_x + 1からendまでのs内のxの位置(xが存在しない場合は-1になります)
    • next_xが-1と同じでない場合、
      • next_x-last_x-1> =dist_minの場合、
        • Trueを返す
      • last_x:=next_x
    • それ以外の場合、
      • サイズがs-last_x-1>=kの場合、
        • Falseを返す
  • nullを返す

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

class Solution:
   def solve(self, s, k):
      pos = s.find("x")
      if pos==-1 or pos>=k: return True last_x = pos
         dist_min = 2*k-1
         while True:
            next_x = s.find("x", last_x+1)
            if next_x!=-1:
               if next_x-last_x-1 >= dist_min:
                  return True
                  last_x = next_x
            else:
               if len(s)-last_x-1>=k: return True
                  return False
         return None
ob = Solution() print(ob.solve("x...x..", 2))

入力

"x...x..", 2

出力

True

  1. Pythonで、どの都市からでも、どの都市からでも訪問できるかどうかを確認するプログラム

    範囲[0、n)の数値として表されたn個の都市があり、ある都市を別の都市に接続する一方通行の道路のリストもあるとします。どの都市からどの都市にも到達できるかどうかを確認する必要があります。 したがって、入力がn =3の場合、roads =[[0、1]、[0、2]、[1,0]、[1,2]、[2,0]、[2,1]] 、0から1および1から0に移動できるため、出力はTrueになります これを解決するために、次の手順に従います- 関数dfs()を定義します。これには、i、visited、gが必要です。 iを訪問済みとしてマーク g [i]のjごとに、実行 jにアクセスしない場

  2. Pythonでkから開始して、リストの最後に到達できることを確認するプログラム

    numsと呼ばれる数のリストと別の数kがあるとします。インデックスkと任意のインデックスiから開始する場合、正確にnums[i]ステップ数だけ左または右に進むことができます。リストの最後に到達できるかどうかを確認する必要があります。 したがって、入力がnums =[0、0、2、1、3、3、1、1] k =2の場合、インデックス2から開始してから、インデックス4にジャンプするかのように、出力はTrueになります。次に、最後のインデックス7にジャンプします。 これを解決するために、次の手順に従います- n:=numsのサイズ 訪問:=サイズnのリストで0を入力 tovisit