程序检查我们是否可以距离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