ปัญหา
เราจำเป็นต้องเขียนฟังก์ชัน 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 ]