Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi ký tự làm đối số đầu tiên và duy nhất.
Hàm phải thử và sắp xếp lại các ký tự có trong chuỗi sao cho không có ký tự ngẫu nhiên nào được đặt liền kề nhau.
Nếu tồn tại ít nhất một tổ hợp như vậy thì hàm của chúng ta sẽ trả về tổ hợp đó nếu không hàm của chúng ta sẽ trả về một chuỗi trống.
Ví dụ -
Nếu chuỗi đầu vào là -
const str = 'add';
Sau đó, hàm của chúng ta có thể xuất ra -
const output = 'dad';
Ví dụ
Sau đây là mã -
const str = 'add'; const formatString = (str = '') => { const map = {}; for(let i = 0; i < str.length; i++){ map[str[i]] = map[str[i]] || 0; map[str[i]] ++; } let keys = Object.keys(map).sort((a, b) => { if(map[a] < map[b]){ return 1; }; return -1; }); let flag = str.length%2?(Math.floor(str.length/2)+1):str.length/2; if(map[keys[0]] > flag){ return ""; }; const res = []; let index = 0, max = str.length-1; while(keys.length){ let currKey = keys.shift(); let count = map[currKey]; while(count){ res[index] = currKey; index = index+2; if(index>max) index=1; count--; } } return res.join(""); }; console.log(formatString(str));
Đầu ra
Sau đây là đầu ra của bảng điều khiển -
dad