1.两次遍历
class Solution {
//遍历两次,一次找 arr[i]距离左边最近的 一次找 arr[i]距离右边最近的
public int[] shortestToChar(String s, char c) {
int[] arr = new int[s.length()];
// 因为一开始 左边 肯定没有 所有把 cindex设为一个很大的负数,这样 i- cindex 就是很大的正数
for (int i = 0, cindex = -10001; i < s.length(); i++) {
if (c == s.charAt(i)) {
cindex = i;
}
arr[i] = i - cindex;
}
// 从右边找
for (int i = s.length() - 1, cindex = 10001; i >= 0; i--) {
if (c == s.charAt(i)) {
cindex = i;
}
//把两边的最小值覆给数组
arr[i] = Math.min(arr[i], cindex - i);
}
return arr;
}
}