সমস্যা
ইংরেজি ছোট হাতের অক্ষরের অ্যারে দেওয়া আছে। প্রতিটি স্ট্রিংয়ের জন্য, কতগুলো ক্যারেক্টার আছে যাদের ১-বেসড ইনডেক্স স্ট্রিংয়েও এবং অ্যালফাবেটেও একই, সেটি গুনতে হবে।
উদাহরণ
স্ট্রিং 'akcle' এর জন্য:
- ইনডেক্স ০: 'a' → অ্যালফাবেট ইনডেক্স ০ (a=1) → মেলে ✓
- ইনডেক্স ১: 'k' → অ্যালফাবেট ইনডেক্স ১০ (k=11) → মেলে না
- ইনডেক্স ২: 'c' → অ্যালফাবেট ইনডেক্স ২ (c=3) → মেলে ✓
- ইনডেক্স ৩: 'l' → অ্যালফাবেট ইনডেক্স ১১ (l=12) → মেলে না
- ইনডেক্স ৪: 'e' → অ্যালফাবেট ইনডেক্স ৪ (e=5) → মেলে ✓
উদাহরণ কোড
const arr = ["abode", "ABc", "xyzD"];
const findIndexPairCount = (arr = []) => {
const alphabet = 'abcdefghijklmnopqrstuvwxyz';
const res = [];
for (let i = 0; i < arr.length; i++) {
let count = 0;
for (let j = 0; j < arr[i].length; j++) {
if (arr[i][j].toLowerCase() === alphabet[j]) {
count++;
}
}
res.push(count);
}
return res;
};
console.log(findIndexPairCount(arr));
আউটপুট
[ 4, 3, 1 ]
ব্যাখ্যা
"abode": a(0)=a, b(1)=b, o(2)≠c, d(3)=d, e(4)=e → ৪টি মেলে"ABc": A(0)=a, B(1)=b, c(2)=c → ৩টি মেলে (কেস-ইনসেনসিটিভ)"xyzD": x(0)≠a, y(1)≠b, z(2)≠c, D(3)=d → ১টি মেলে
আধুনিক সংক্ষিপ্ত সংস্করণ
const findIndexPairCountModern = (arr) =>
arr.map(str =>
[...str.toLowerCase()].filter((char, i) => char === 'abcdefghijklmnopqrstuvwxyz'[i]).length
);
console.log(findIndexPairCountModern(["abode", "ABc", "xyzD"])); // [4, 3, 1]
ব্যাখ্যা
str.toLowerCase()- কেস-ইনসেনসিটিভ কমপারিশনের জন্য।[...str]- স্ট্রিংকে ক্যারেক্টার অ্যারেতে রূপান্তর।filter((char, i) => char === alphabet[i])- ইনডেক্স মিল চেক।.length- মেলা ক্যারেক্টার কাউন্ট।