在 JavaScript 中将字符串拆分成最大部分
javascriptweb developmentfront end technology
问题
我们需要编写一个 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 ]