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

การเรียงลำดับตัวอักษรภายในสตริงใน JavaScript


สมมติว่าเรามีสตริงคำที่คั่นด้วยเครื่องหมายจุลภาคเช่นนี้ −

const str = 'JAY, ROB';

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

ตัวอย่างเช่น ในสตริงด้านบน เราต้องการเปรียบเทียบตัวอักษรตัวแรกของ JAY กับตัวอักษรตัวแรกของ ROB

เนื่องจาก J มาก่อนเมื่อเปรียบเทียบกับ R ตัวอักษรตัวแรกของคำใหม่จะเป็น J การเปรียบเทียบตัวที่สอง เนื่องจาก A มาก่อน R จึงกลายเป็นตัวอักษรตัวที่สอง ตัวอักษรที่สามจึงกลายเป็น R ในทำนองเดียวกัน

ดังนั้นคำสุดท้ายจะเป็น 'JAROBY'

โปรดทราบว่าสำหรับตัวอย่างนี้ เรานำสตริงที่มีคำเพียงสองคำ แต่เราต้องเขียนวิธีแก้ปัญหาที่ใช้ได้กับคำมากกว่าสองคำเช่นกัน

ตัวอย่าง

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

const str = `JAY,ROB,APPLE,AAKO`;
const specialSort = (str = '') => {
   let len = str.replace(/,/g, "").length;
   const sorter = (str, b) => {
      if(str === "" || str === null) return 1;
      if(b === "" || b === null) return −1;
      if(str === b) return 0;
      return str < b ? −1 : 1;
   };
   let res = "";
   let sorted = str.split(",").sort(sorter);
   while (res.length < len){
      res += sorted[0][0];
      sorted[0] = sorted[0].slice(1);
      sorted = sorted.sort(sorter);
   }
   return res;
};
console.log(specialSort(str));

ผลลัพธ์

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

AAAJAKOPPLEROBY