สมมติว่าเรามีสตริงคำที่คั่นด้วยเครื่องหมายจุลภาคเช่นนี้ −
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