Chúng ta cần viết một hàm JavaScript nhận vào một chuỗi làm đối số đầu tiên và duy nhất.
Hàm nên tìm và trả về chỉ số của ký tự đầu tiên mà nó gặp trong chuỗi mà chỉ xuất hiện một lần trong chuỗi.
Nếu chuỗi không chứa bất kỳ ký tự duy nhất nào, hàm nên trả về -1.
Ví dụ:
Nếu chuỗi đầu vào là:
const str = 'hellohe';
Thì đầu ra nên là:
const output = 4;
Ví dụ
Dưới đây là mã nguồn:
const str = 'hellohe'; const firstUnique = (str = '') => { let obj = {}; for(let i = 0; i < str.length; i++){ if(str[i] in obj){ let temp = obj[str[i]]; let x = parseInt(temp[0]); x += 1; temp[0] = x; obj[str[i]] = temp; } else { obj[str[i]] = [1, i] } } let arr = Object.keys(obj); for(let i = 0; i < arr.length; i++){ let z = obj[arr[i]] if(z[0] === 1){ return z[1]; } } return -1; }; console.log(firstUnique(str));Kết quả
Đầu ra trên console:
4
Giải thích: Lưu [count, firstIndex] cho mỗi ký tự. Duyệt object keys theo thứ tự insertion (ES2015+ guaranteed) để tìm count=1 đầu tiên. Hoặc duyệt lại chuỗi lần 2 kiểm tra count. LeetCode 387 "First Unique Character in a String".