Program to find list that shows closest distance of character c from that index in Python


Suppose we have a string s and another character c, c must be present in s, we have to find a list whose length is same as length of s where for each index i its value is set the closest distance of s[i] to c.

So, if the input is like s = "ppqppq" c = "q", then the output will be [2, 1, 0, 1, 1, 0]

To solve this, we will follow these steps −

  • j := size of s

  • d := [j - 1] * j

  • x := index of c in s

  • for i in range 0 to j - 1, do

    • if s[i] is same as c and i > x, then

      • x := i, ind := 1

      • loop through the following, do

        • if d[x - ind] > ind, then

          • d[x - ind] := ind

        • otherwise,

          • come out from the loop

        • ind := ind + 1

    • d[i] := |x - i|

  • return d

Example

Let us see the following implementation to get better understanding

def solve(s, c):
   j = len(s)
   d = [j - 1] * j
   x = s.index(c)
   for i in range(j):
      if s[i] == c and i > x:
         x = i
         ind = 1
         while True:
            if d[x - ind] > ind:
               d[x - ind] = ind
            else:
               break
            ind += 1
      d[i] = abs(x - i)
   return d

s = "ppqppq"
c = "q"
print(solve(s, c))

Input

"ppqppq", "q"

Output

[2, 1, 0, 1, 1, 0]

Updated on: 11-Oct-2021

330 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements