Program to check whether we can stand at least k distance away from the closest contacts in Python


Suppose we have a string s and a number k. Now each character in the string is either dot ('.') or 'x', where dot indicates an empty space and 'x' indicates a person. We have to check whether it's possible to choose a position to stand on such that the distance between us and the closest person to us is at least k. (Here the distance between each neighbouring indices is 1).

So, if the input is like s = "x...x..", k = 2, then the output will be True, as we can stand at s[2] or s[6].

To solve this, we will follow these steps −

  • pos := location of x in s, if not present, pos will be -1
  • if pos is same as -1 or pos>=k, then
    • return True
  • last_x := pos
  • dist_min := 2*k-1
  • Do infinite loop, do
    • next_x := location of x in s from index last_x+1 to end (if x is not present, it will be -1)
    • if next_x is not same as -1, then
      • if next_x-last_x-1 >= dist_min, then
        • return True
      • last_x := next_x
    • otherwise,
      • if size of s -last_x-1 >= k, then
        • return False
  • return null

Let us see the following implementation to get better understanding −

Example

 Live Demo

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))

Input

"x...x..", 2

Output

True

Updated on: 05-Oct-2020

40 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements