Vấn đề
Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi, str, làm đối số đầu tiên và duy nhất.
Mục đích của hàm của chúng ta là phân vùng chuỗi này thành nhiều phần nhất có thể để mỗi chữ cái xuất hiện ở nhiều nhất một phần và trả về một mảng các số nguyên đại diện cho kích thước của các phần này.
Ví dụ:nếu đầu vào của hàm là
Đầu vào
const str = "ababcbacadefegdehijhklij";
Đầu ra
const output = [9, 7, 8];
Giải thích đầu ra
Phân vùng là "ababcbaca", "defegde", "hijhklij". Đây là một phân vùng sao cho mỗi chữ cái xuất hiện trong nhiều nhất một phần. Một phân vùng như "ababcbacadefegde", "hijhklij" là không chính xác, vì nó chia chuỗi str thành các phần nhỏ hơn.
Ví dụ
Sau đây là mã -
const str = "ababcbacadefegdehijhklij"; const splitStrings = (str = '') => { const res = [] const map = {} for (let i = 0; i < str.length; i++) { map[str[i]] = i } let start = 0 while (start <= str.length - 1) { let end = map[str[start]] for (let i = start + 1; i < end; i++) { const currentEnd = map[str[i]] if (currentEnd > end) { end = currentEnd } } res.push(end - start + 1) start = end + 1 } return res }; console.log(splitStrings(str));
Đầu ra
[ 9, 7, 8 ]