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

ค้นหาสตริงย่อยที่ยาวที่สุดผิดปกติในอาร์เรย์ใน JavaScript


ภาคต่อ

สำหรับจุดประสงค์ของปัญหานี้ เรากำหนดลำดับย่อยเป็นลำดับที่สามารถได้มาจากลำดับหนึ่งโดยการลบอักขระบางตัวโดยไม่เปลี่ยนลำดับขององค์ประกอบที่เหลือ สตริงใด ๆ เป็นผลสืบเนื่องมาจากตัวมันเอง และสตริงว่างนั้นเป็นผลสืบเนื่องมาจากสตริงใด ๆ

ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของสตริงเป็นอาร์กิวเมนต์เดียว ฟังก์ชันของเราจำเป็นต้องค้นหาความยาวของลำดับย่อยที่ไม่ธรรมดาที่ยาวที่สุดในบรรดาสิ่งเหล่านี้

โดยลำดับย่อยที่ผิดปกติที่ยาวที่สุด เราหมายถึงลำดับย่อยที่ยาวที่สุดของหนึ่งในสตริงในอาร์เรย์ และลำดับย่อยนี้ไม่ควรเป็นผลสืบเนื่องใดๆ ของสตริงอื่นๆ ในอาร์เรย์

หากไม่มีลำดับย่อยที่ผิดปกติ เราควรคืนค่า -1

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const arr = ["aba", "cdc", "eae"];

จากนั้นผลลัพธ์ควรเป็น −

const output = 3;

คำอธิบายผลลัพธ์:

“aba”, “cdc” และ “eae” ล้วนเป็นผลสืบเนื่องของความยาว 3 ที่ไม่ธรรมดา

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = ["aba", "cdc", "eae"];
const longestUncommon = (strs) => {
   const map = {};
   const arr = [];
   let max = -1;
   let index = -1;
   for(let i = 0; i < strs.length; i++){
      map[strs[i]] = (map[strs[i]] || 0) + 1;
      if(map[strs[i]] > 1){
         if(max < strs[i].length){
            max = strs[i].length
            index = i;
         }
      }
   }
   if(index === -1) {
      strs.forEach(el =>{
         if(el.length > max) max = el.length;
      })
      return max;
   }
   for(let i = 0; i < strs.length; i++){
      if(map[strs[i]] === 1) arr.push(strs[i]);
   }
   max = -1
   for(let i = arr.length - 1; i >= 0; i--){
      let l = arr[i];
      let d = 0;
      for(let j = 0; j < strs[index].length; j++){
         if(strs[index][j] === l[d]){
            d++;
         }
      }
      if(d === l.length){
         let temp = arr[i];
         arr[i] = arr[arr.length - 1];
         arr[arr.length - 1] = temp;
         arr.pop();
      }
   }
   arr.forEach(el =>{
      if(el.length > max) max = el.length;
   })
   return max;
};
console.log(longestUncommon(arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

3