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