在 JavaScript 中将字符串拆分为最大部分

问题

我们需要编写一个 JavaScript 函数,它接受一个字符串 str 作为第一个也是唯一的参数。

我们函数的目的是将这个字符串分成尽可能多的部分,使每个字母最多出现在一个部分,并返回一个表示这些部分大小的整数数组。

例如,如果函数的输入是

输入

const str = "ababcbacadefegdehijhklij";

输出

const output = [9, 7, 8];

输出说明

分区是“ababcbaca”、“defegde”、“hijhklij”。这是一个分区,因此每个字母最多出现在一个部分中。像 "ababcbacadefegde"、"hijhklij" 这样的分区是不正确的,因为它将字符串 str 拆分成更少的部分。

示例

以下是代码 -

const str = "ababcbacadefegdehijhklij";

const splitStrings = (str = '') => {

   const res = []

   const map = {}

   for (let i = 0; i < str.length; i++) {

      map[str[i]] = i

   }

   let start = 0

   while (start <=str.length- 1) {

      let end = map[str[start]]

      for (let i = start + 1; i < end; i++) {

         const currentEnd = map[str[i]]

         if (currentEnd > end) {

            end = currentEnd

         }

      }

      res.push(end - start + 1)

      start = end + 1

   }

   return res

};

console.log(splitStrings(str));

输出结果
[ 9, 7, 8 ]

以上是 在 JavaScript 中将字符串拆分为最大部分 的全部内容, 来源链接: utcz.com/z/338775.html

回到顶部