在 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