程序检查我们是否可以距离Python中最接近的联系人至少k距离

假设我们有一个字符串s和一个数字k。现在,字符串中的每个字符都是点('。')或'x',其中点表示空白,而'x'表示人物。我们必须检查是否有可能选择一个站立的姿势,以使我们与离我们最近的人之间的距离至少为k。(这里每个相邻索引之间的距离为1)。

因此,如果输入像s =“ x ... x ..”,k = 2,则输出将为True,因为我们可以站在s [2]或s [6]。

为了解决这个问题,我们将遵循以下步骤-

  • pos:= x在s中的位置,如果不存在,则pos将为-1

  • 如果pos与-1相同或pos> = k,则

    • 返回True

  • last_x:=位置

  • dist_min:= 2 * k-1

  • 做无限循环,做

    • 如果s -last_x-1的大小> = k,则

    • 返回False

    • 如果next_x-last_x-1> = dist_min,则

    • last_x:= next_x

    • 返回True

    • next_x:= x在s中从索引last_x + 1到结束的位置(如果x不存在,则为-1)

    • 如果next_x与-1不同,则

    • 除此以外,

    • 返回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
    猜你喜欢