সমস্যা
ধরুন নিচের সংখ্যাটির নামের স্ট্রিং −
const str = 'TOWNE';
যদি আমরা এই স্ট্রিংটি পুনরায় সাজান, তাহলে আমরা এতে দুটি সংখ্যার নাম 2 (TWO) এবং 1 (ONE) খুঁজে পাব।
অতএব, আমরা 21
এর আউটপুট আশা করিআমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এই ধরনের একটি স্ট্রিং নেয় এবং স্ট্রিংটিতে উপস্থিত সংখ্যাগুলি ফেরত দেয়৷
উদাহরণ
নিম্নলিখিত কোড -
const str = 'TOWNE';
const findNumber = (str = '') => {
function stringPermutations(str) {
const res = [];
if (str.length == 1) return [str];
if (str.length == 2) return [str, str[1]+str[0]];
str.split('').forEach((chr, ind, arr) => {
let sub = [].concat(arr);
sub.splice(ind, 1);
stringPermutations(sub.join('')).forEach(function (perm) {
res.push(chr+perm);
});
});
return res;
}
const legend = {
'ONE': 1, 'TWO': 2, 'THREE': 3, 'FOUR': 4,
'FIVE': 5, 'SIX': 6, 'SEVEN': 7, 'EIGHT': 8,
'NINE': 9, 'ZERO': 0
};
const keys = Object.keys(legend);
const res = {};
const resArr = [];
let result = '';
keys.forEach(key => {
const match = stringPermutations(key).find(el => el.split('').every(char => str.includes(char)));
if(match){
const index = str.indexOf(match[0]);
if(!res.hasOwnProperty(key)){
res[key] = [index];
}else if(!res[key].includes(index)){
res[key].push(index);
};
};
});
Object.keys(res).forEach(word => {
resArr.push([word, ...res[word]]);
});
resArr.sort((a, b) => a[1] - b[1]);
resArr.forEach(sub => {
result = result + String(legend[sub[0]]).repeat(sub.length - 1);
});
return +result;
};
console.log(findNumber(str)); আউটপুট
নিম্নোক্ত কনসোল আউটপুট -
21