Viết hàm nhận vào chuỗi, trả về chỉ số (index) của ký tự đầu tiên xuất hiện 2 lần. Trả về -1 nếu không có ký tự lặp.
Ví dụ
Chuỗi: 'Hello world, how are you'
Ký tự 'l' ở vị trí 2 là ký tự đầu tiên lặp (xuất hiện lại ở vị trí 3).
Giải pháp
Sử dụng Map để theo dõi vị trí đầu tiên:
const str = 'Hello world, how are you';
const firstRepeating = str => {
const map = new Map();
for (let i = 0; i < str.length; i++) {
if (map.has(str[i])) {
return map.get(str[i]); // Trả về chỉ số LẦN ĐẦU
}
map.set(str[i], i);
}
return -1;
};
console.log(firstRepeating(str));
Kết quả
Đầu ra trong console:
2