Viết hàm ánh xạ chuỗi thành mảng số: mỗi ký tự mới (chưa thấy) tăng chỉ số, ký tự trùng dùng chỉ số cũ.
Ví dụ
Chuỗi: 'heeeyyyy'
Kết quả: [0, 1, 1, 1, 2, 2, 2, 2]
- h (mới) → 0
- e (mới) → 1, e,e → 1
- y (mới) → 2, y,y,y → 2
Giải pháp
Mã triển khai:
const str = 'heeeyyyy';
const mapString = str => {
const res = [];
let curr = '', count = -1;
for (let i = 0; i < str.length; i++) {
if (str[i] === curr) {
res.push(count);
} else {
count++;
res.push(count);
curr = str[i];
}
}
return res;
};
console.log(mapString(str));
Kết quả
Đầu ra trong console:
[0, 1, 1, 1, 2, 2, 2, 2]
Lưu ý: Chỉ xét ký tự liên tiếp. Nếu 'h' xuất hiện lại sau 'y' sẽ được chỉ số mới.