Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


สมมติว่าเรามีคีย์เวิร์ด ซึ่งแทนที่จะเป็นคีย์แมปแบบ 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