ปัญหา
เราต้องเขียนฟังก์ชัน JavaScript ที่รับสตริง str ฟังก์ชันควรตรวจสอบตัวอักษรในสตริงตามตัวเลขที่อยู่หน้าพวกเขา
ต้องแยกสตริงด้วยตัวเลข แล้วเปรียบเทียบตัวเลขกับจำนวนตัวอักษรใน substring ถัดไป ถ้าตรงกันทุกคู่ สตริงถือว่าถูกต้อง คืน true ไม่งั้น false
เช่น:
5hello4from2me
ควรคืน true เพราะแยกได้ 'hello'(5), 'from'(4), 'me'(2) ความยาวตรงกับตัวเลขหน้าตัว
ตัวอย่าง
โค้ดตัวอย่างด้านล่าง:
const str = '5hello4from2me';
const validateString = (str = '') => {
const lenArray = [];
let temp = '';
for (let i = 0; i < str.length; i++) {
const el = str[i];
if (+el) {
lenArray.push([+el, '']);
} else {
const { length: len } = lenArray;
lenArray[len - 1][1] += el;
}
}
return lenArray.every(sub => sub[0] === sub[1].length);
};
console.log(validateString(str));
ผลลัพธ์
true
คำอธิบายเพิ่มเติม
โค้ด parse สตริงโดยอ่านตัวเลขเป็นความยาวที่คาดหวัง แล้วเก็บตัวอักษรตามไปเรื่อยๆ จนกว่าจะเจอตัวเลขถัดไป หรือจบสตริง ตรวจสอบท้ายด้วย every()