携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第4天,点击查看活动详情
题目描述
思路
从S[i]位置开始,分别向左和向右进行搜索,取最小距离存到数组中
完整代码
var shortestToChar = function (S, C) {
var res = Array(S.length).fill(0);
for (let i = 0; i < S.length; i++) {
if (S[i] === C) continue;
let l = i,r = i,min = Infinity;
while (l >= 0) {
if (S[l] === C) {
min = Math.min(min, i - l);
break;
}
l--;
}
while (r < S.length) {
if (S[r] === C) {
min = Math.min(min, r - i);
break;
}
r++;
}
res[i] = min;
}
return res;
};
复杂度
时间复杂度:O(n)
空间复杂度:O(n)