解题思路:
1.把字符串中所有的C字符的索引用List存储起来
2.遍历字符串,将当前字符的索引与List中所有的C字符的索引都比较一下,找到差值的最小值
3.将第2步得到的差值的最小值依次存储到结果数组中
代码实现如下:
class Solution {
public int[] shortestToChar(String S, char C) {
int len=S.length();
//把字符串中所有的C字符的索引存储起来
List<Integer> list=new ArrayList<>();
for(int i=0;i<len;++i){
if(S.charAt(i)==C){
list.add(i);
}
}
int[] res=new int[len];
int size=list.size();
for(int i=0;i<len;++i){
int min=len;
for(int k=0;k<size;++k){
int minus=Math.abs(i-list.get(k));
min=min<minus?min:minus;
}
res[i]=min;
}
return res;
}
}