समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो एक स्ट्रिंग, str, को पहला और एकमात्र तर्क के रूप में लेता है।
हमारे फ़ंक्शन का उद्देश्य इस स्ट्रिंग को यथासंभव अधिक भागों में विभाजित करना है ताकि प्रत्येक अक्षर अधिकतम एक भाग में दिखाई दे, और इन भागों के आकार को दर्शाने वाले पूर्णांकों की एक सरणी वापस करना है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है
इनपुट
const str = "ababcbacadefegdehijhklij";
आउटपुट
const output = [9, 7, 8];
आउटपुट व्याख्या
पार्टीशन है "ababcbaca", "defegde", "hijhklij"। यह एक पार्टीशन है ताकि प्रत्येक अक्षर अधिकतम एक भाग में दिखाई दे। "ababcbacadefegde", "hijhklij" जैसा पार्टीशन गलत है, क्योंकि यह स्ट्रिंग str को कम भागों में विभाजित करता है।
उदाहरण
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));
आउटपुट
[ 9, 7, 8 ]