在 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 ]
廣告