บางครั้งคนเขียนจดหมายซ้ำเพื่อแสดงความรู้สึกพิเศษ เช่น "hello" −> "heeellooo", "hi" −> "hiiii" ในสตริงเหล่านี้ เช่น "heeellooo" เรามีกลุ่มตัวอักษรที่อยู่ติดกันซึ่งเหมือนกันทั้งหมด:"h", "eee", "ll", "ooo"
สำหรับสตริงที่กำหนด S บางคำ คำที่ใช้ค้นหาจะยืดออกได้หากสามารถทำให้เท่ากับ S โดยใช้แอปพลิเคชันส่วนขยายต่อไปนี้จำนวนเท่าใดก็ได้ เลือกกลุ่มที่ประกอบด้วยอักขระ c และเพิ่มจำนวนอักขระ c ลงในกลุ่ม เพื่อให้กลุ่มมีขนาดตั้งแต่ 3 ขึ้นไป
ตัวอย่างเช่น เริ่มต้นด้วย "hello" เราสามารถขยายกลุ่ม "o" เพื่อรับ "hellooo" ได้ แต่เราไม่สามารถเรียก "helloo" ได้ เนื่องจากกลุ่ม "oo" มีขนาดน้อยกว่า 3 เรายังทำได้ ส่วนขยายอื่นเช่น "ll" −> "llllll" เพื่อรับ "helllllooo" หาก S ="helllllooo" คำว่า "hello" ที่ใช้ค้นหาจะยืดเยื้อเนื่องจากการดำเนินการส่วนขยายทั้งสองนี้:query ="hello" −> "hellooo" −> "helllllooo" =S.
จากรายชื่อคำที่ใช้ค้นหา เราจำเป็นต้องคืนค่าจำนวนคำที่ยืดออก
ตัวอย่างเช่น −
หากสตริงอินพุตเป็น −
const str = 'heeellooo';
และรายการคำศัพท์คือ −
const words = ["hello", "hi", "helo"];
และผลลัพธ์ควรเป็น −
const output = 1
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const str = 'heeellooo'; const words = ["hello", "hi", "helo"]; const extraWords = (str, words) => { let count = 0; for (let w of words) { let i = 0; let j = 0; for (; i < str.length && j < w.length && w[j] === str[i];) { let lenS = 1; let lenW = 1; for (; i+lenS < str.length && str[i+lenS] === str[i]; lenS++); for (; j+lenW < w.length && w[j+lenW] === w[j]; lenW++); if (lenS < lenW || lenS > lenW && lenS < 3) break; i += lenS; j += lenW; } if (i === str.length && j === w.length) { count++; } } return count; } console.log(extraWords(str, words));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
1