Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การคำนวณเวลาที่ใช้พิมพ์คำใน JavaScript

สมมติว่าเรามีคีย์บอร์ดที่แทนที่จะเป็นแบบ qwerty แมปปุ่มตามลำดับอักษรอังกฤษ คือ abcde...

ก่อนเข้าปัญหา ต้องสมมติสองอย่าง:

  • ปลายนิ้วมืออยู่ที่ดัชนี 0 คือปุ่ม 'a'
  • เวลาที่ใช้ย้ายจากปุ่มหนึ่งไปอีกปุ่มคือความต่างสัมบูรณ์ของดัชนี เช่น จาก 'a' ไป 'k' ใช้เวลา |0 - 10| = 10

เราต้องเขียนฟังก์ชันที่รับสตริงอักษรอังกฤษพิมพ์เล็ก และคำนวณคืนเวลาที่ใช้พิมพ์สตริงนั้น

ตัวอย่าง

ถ้าสตริงนำเข้าคือ:

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