สมมติว่าเรามีคีย์เวิร์ด ซึ่งแทนที่จะเป็นคีย์แมปแบบ qwerty แบบดั้งเดิม คีย์แมปแบบง่ายๆ ตามลำดับตัวอักษรภาษาอังกฤษ เช่น abcde...
ก่อนที่เราจะลงลึกในปัญหา เราต้องตั้งสมมติฐานสองข้อต่อไปนี้ −
-
ขณะนี้ปลายนิ้วของเราวางไว้ที่ดัชนี 0 นั่นคือคีย์ 'a
-
เวลาที่ใช้ในการย้ายจากคีย์หนึ่งไปยังอีกคีย์หนึ่งคือความแตกต่างที่แน่นอนของดัชนี ตัวอย่างเช่น เวลาที่ใช้ในการย้ายจาก 'a' เป็น 'k' จะเป็น |0 - 10| =10
เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่ใช้สตริงของตัวอักษรพิมพ์เล็กภาษาอังกฤษ และคำนวณและส่งคืนเวลาที่เราจะต้องใช้ในการพิมพ์สตริง
ตัวอย่างเช่น −
หากสตริงอินพุตเป็น −
const str = 'dab';
ผลลัพธ์
const output = 7;
เพราะการเคลื่อนไหวที่เกิดขึ้นคือ −
'a' -> 'd' = 3 'd' -> 'a' = 3 'a' -> 'b' = 1
ตัวอย่าง
รหัสสำหรับสิ่งนี้จะเป็น −
const str = 'dab'; const findTimeTaken = (str = '') => { let timeSpent = 0; const keyboard = 'abcdefghijklmnopqrstuvwxyz'; let curr = 'a'; for(let i = 0; i < str.length; i++){ const el = str[i]; const fromIndex = keyboard.indexOf(curr); const toIndex = keyboard.indexOf(el); const time = Math.abs(fromIndex - toIndex); curr = el; timeSpent += time; }; return timeSpent; }; console.log(findTimeTaken(str));
ผลลัพธ์
และผลลัพธ์ในคอนโซลจะเป็น −
7