假设我们有一个字符串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