luoheng
10/11/2019 - 2:47 AM

shortestToChar

func shortestToChar(S string, C byte) []int {
    dis := make([]int, len(S))
    for i := 0; i < len(S); i++ {
        dis[i] = 10001
    }
    last := -10001
    for i := 0; i < len(S); i++ {
        if S[i] == C {
            if last < 0 {
                last = -1
            }
            for j := last+1; j <= i; j++ {
                if dis[j] > i - j {
                    dis[j] = i - j
                }
            }
            last = i
        } else if last >= 0 {
            dis[i] = i - last
        }
    }
    return dis
}