在 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 ]
广告
数据结构
网络技术
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 程序设计
C++
C#
MongoDB
MySQL
Javascript
PHP