একটি স্ট্রিং দেওয়া থাকলে, এমন ক্যারেক্টার জোড়ার সংখ্যা গণনা করতে হবে যাদের মধ্যে পার্থক্য ইংরেজি বর্ণমালার দূরত্বের সমান। অর্থাৎ, |str[i] - str[j]| == |i - j| হলে সেটি একটি বৈধ জোড়া।
উদাহরণ
ইনপুট: "Tutorials Point"
বৈধ জোড়া: (u,t), (u,r), (t,r), (i,o), (s,n) → মোট 5টি
অ্যালগরিদম
- নেস্টেড লুপ চালান: বাহ্যিক লুপ i = 0 থেকে len-1, অভ্যন্তরীণ লুপ j = i+1 থেকে len-1।
- প্রতিটি জোড়ার জন্য
abs(str[i] - str[j]) == abs(i - j)চেক করুন। - সত্য হলে কাউন্ট বাড়ান।
সময় জটিলতা: O(n²)
C++ কোড উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int countPairsDistance(string str) {
int count = 0;
int len = str.length();
for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
int charDiff = abs(str[i] - str[j]);
int indexDiff = abs(i - j);
if (charDiff == indexDiff)
count++;
}
}
return count;
}
int main() {
string str = "Tutorials Point";
cout << "Count of pairs: " << countPairsDistance(str);
return 0;
}
ইনপুট
"Tutorials Point"
আউটপুট
5