Chúng tôi được yêu cầu viết một hàm JavaScript có trong một chuỗi có thể chứa một số ký tự lặp lại liên tục.
Hàm sẽ nén chuỗi như thế này -
'wwwaabbbb' -> 'w3a2b4' 'kkkkj' -> 'k4j'
Và nếu độ dài của chuỗi nén lớn hơn hoặc bằng chuỗi ban đầu, chúng ta nên trả về chuỗi ban đầu.
Ví dụ -
'aab' có thể được nén thành 'a2b1' nhưng nó tăng độ dài lên 4 nên hàm của chúng ta sẽ trả về 'aab'
Ví dụ
Mã cho điều này sẽ là -
const str1 = 'wwwaabbbb'; const str2 = 'kkkkj'; const str3 = 'aab'; const compressString = (str = '') => { let res = ''; let count = 1; for(let i = 0; i < str.length; i++){ let cur = str[i]; let next = str[i + 1]; if(cur === next){ count++; }else{ res += cur + String(count); count = 1; }; } return res.length < str.length ? res : str; }; console.log(compressString(str1)); console.log(compressString(str2)); console.log(compressString(str3));
Đầu ra
Và đầu ra trong bảng điều khiển sẽ là -
3a2b4 k4j1 aab