Giả sử, chúng ta có một chuỗi các từ phân cách bởi dấu phẩy như sau:
const str = 'JAY, ROB';
Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi như vậy. Hàm có thể tạo một từ mới từ các từ trong chuỗi mà chữ cái trước luôn lớn hơn hoặc bằng chữ cái tiếp theo (ví dụ: A lớn hơn B).
Ví dụ, trong chuỗi trên chúng ta muốn so sánh chữ cái đầu của JAY với chữ cái đầu của ROB. Vì J đến trước khi so sánh với R, chữ cái đầu của từ mới sẽ là J. So sánh chữ cái thứ hai, vì A đến trước R nên nó trở thành chữ cái thứ hai, chữ cái thứ ba tương tự trở thành R. Do đó, từ cuối cùng sẽ là 'JAROBY'.
Lưu ý rằng, ví dụ này chỉ có hai từ, nhưng chúng ta cần viết giải pháp hoạt động với nhiều hơn hai từ.
Ví dụ
Code cho việc này sẽ là:
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));Kết quả
Kết quả hiển thị trong console sẽ là:
AAAJAKOPPLEROBY