JavaScript 中字符串中每个字符的最近距离


问题

我们需要编写一个 JavaScript 函数,该函数将第一个参数作为一串英文小写字母 str,第二个参数是字符串 str 中存在的单个字符 char。

我们的函数应准备并返回一个数组,该数组包含字符串 str 中的每个字符与其距离指定的字符 char 最近的字符的距离。

例如,如果输入以下内容:

输入

const str = 'somestring';
const char = 's';

输出

const output = [0, 1, 2, 1, 0, 1, 2, 3, 4, 5]

示例

以下为代码 −

 在线演示

const str = 'somestring';
const char = 's';
const shortestDistance = (str = '', char = '') => {
   const res = new Array(str.length).fill(Infinity)
   let prev = Infinity
   const handleIndex = (i) => {
      if (str[i] === char) {
         prev = i
      }
      res[i] = Math.min(res[i], Math.abs(i - prev), )
   }
   for (let i = 0; i < str.length; i++) {
      handleIndex(i)
   }
   prev = Infinity
   for (let i = str.length - 1; i >= 0; i--) {
      handleIndex(i)
   }
   return res
}
console.log(shortestDistance(str, char));

输出

[ 0, 1, 2, 1, 0, 1, 2, 3, 4, 5 ]

更新于: 2021 年 4 月 24 日

141 浏览量

开启您的 职业

完成课程可获得认证

开始
广告