leetcode 821. 字符的最短距离

75 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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)