Given a string `S` and a character `C`, return an array of integers representing the shortest distance from the current character in `S` to `C`.

### Notes

* All letters will be lowercase.
* If the string is empty, return an empty array.
* If the character is not present, return an empty array.

## Examples

```python
shortest_to_char("lovecodewars", "e") == [3, 2, 1, 0, 1, 2, 1, 0, 1, 2, 3, 4]
shortest_to_char("aaaabbbb", "b") == [4, 3, 2, 1, 0, 0, 0, 0]
shortest_to_char("", "b") == []
shortest_to_char("abcde", "") == []
```

___

If you liked it, please rate  :D

Difficulty: introductory

Starter code:

def shortest_to_char(s, c):
	

Solutions:
def shortest_to_char(s, c):
    if not s or not c:
        return []

    indexes = [i for i, ch in enumerate(s) if ch == c]
    if not indexes:
        return []
        
    return [ min(abs(i - ic) for ic in indexes) for i in range(len(s)) ]


def shortest_to_char(s, c):
    L = [i for i,x in enumerate(s) if x == c]
    return [min(abs(i - j) for j in L) for i,x in enumerate(s)] if L else []

def shortest_to_char(s, c):
  return [min(x.find(c) + 1 or 1e3 for x in [s[i:], s[:i+1][::-1]]) - 1 for i in range(len(s))] if c and c in s else []

def shortest_to_char(s, c):
    if not c: return []
    l = []
    for i,x in enumerate(s):
        a,b = s[i:].find(c), s[:i+1][::-1].find(c)
        if a != -1:
            a = abs(i-i + a)
        else: a = float('inf')
        if b != -1:
            b = s[:i+1][::-1].find(c)
        else: b = float('inf')
        get_min = min(a,b)
        if get_min != float('inf'):
            l.append(get_min)
    return l

import re

def shortest_to_char(s, c):
    if not c or c not in s:
        return []
    positions = [m.start() for m in re.finditer(c, s)]
    return [min(abs(p - i) for p in positions) for i in range(len(s))]

def shortest_to_char(alist, target):
    # find all locations of target character
    loc = [i for i, x in enumerate(alist) if x == target]
    if not loc: return []

    # for every character in the alist, find the minimum distance
    # to one or more target characters
    shortest = [min(abs(i - l ) for l in loc) for i in range(len(alist))] 
    return shortest


def shortest_to_char(s, c):
    if not (s and c and c in s):
        return []
    idxs = [i for i, x in enumerate(s) if x == c]
    return [min(abs(j-i) for j in idxs) for i, x in enumerate(s)]

def shortest_to_char(s,c):
    i = s.find(c)
    if i==-1 or not c: return []
    
    lst = list(reversed(range(1,i+1)))
    while i != -1:
        j = s.find(c,i+1)
        if j == -1:
            lst.extend(range(len(s)-i))
        else:
            x = j-i>>1
            lst.extend(range(0,x+1))
            lst.extend(reversed(range(1,j-i-x)))
        i = j
    return lst

def shortest_to_char(s, c):
    if not s or not c: return []
    a = [i for i, x in enumerate(s) if x == c]
    if not a: return []
    r, n = [0] * len(s), 0
    for x, y in zip(a, a[1:] + [None]):
        m = (x + y + 1) // 2 if y is not None else len(s)
        while n < m:
            r[n] = abs(n - x)
            n += 1
    return r

def shortest_to_char(s, c):
    if not c in s or not c: return []
    return [(0 if c == s[x] else min([abs(x - y) for y in [x for x in range(len(s)) if s[x] == c]])) for x in range(len(s))]