এই সমস্যায় একটি বাক্য দেওয়া আছে। আমাদের বাক্য থেকে যেসব শব্দ ফানি ওয়ার্ড সেগুলো প্রিন্ট করতে হবে।
ফানি ওয়ার্ড হলো সেই শব্দ যা এই শর্ত মেনে চলে - স্ট্রিংর সন্নিহিত ক্যারেক্টারগুলোর পরম পার্থক্য এবং এর রিভার্স স্ট্রিংর সন্নিহিত ক্যারেক্টারগুলোর পরম পার্থক্য সমান।
|string[0] - string[1]| = |revstring[0] - revstring[1]|
উদাহরণ
ইনপুট: string = 'ABRS' আউটপুট: Yes ব্যাখ্যা: রিভার্স স্ট্রিং = SRBA |A-B| = 1 = |S-R| |B-R| = 16 = |R-B| |B-A| = 1 = |R-S|
এই সমস্যাটি সমাধানের জন্য বাক্য থেকে প্রতিটি শব্দ এক্সট্র্যাক্ট করতে হবে। এবং যদি শব্দটি ফানি স্ট্রিং হয় তবে প্রিন্ট করা হবে।
ফানি স্ট্রিং চেক - এর জন্য স্ট্রিংকে দুই প্রান্ত থেকে ট্রাভার্স করা হবে (শুরু থেকে এবং শেষ থেকে)। এবং স্ট্রিংর সন্নিহিত ক্যারেক্টারগুলোর পরম পার্থক্য তুলনা করা হবে। যদি পার্থক্য একই না হয় তবে false রিটার্ন করা হবে।
বাস্তবায়ন
#include <iostream>
#include<string.h>
using namespace std;
bool isFunny(string word) {
int i = 1;
int j = word.length() - 2;
for (int i = 0; i < word.length(); i++)
word[i] = tolower(word[i]);
while (i <= j) {
if (abs(word[i] - word[i - 1]) != abs(word[j] - word[j + 1]))
return false;
i++;
j--;
}
return true;
}
void printFunnyWords(string str) {
str += " ";
string word = "";
for (int i = 0; i < str.length(); i++) {
char ch = str[i];
if (ch != ' ')
word += ch;
else {
if (isFunny(word))
cout << word << "\t";
word = "";
}
}
}
int main() {
string sentence = "hello, i love malayalam langauge";
cout << "All funny words of the string '" << sentence << "' are :\n";
printFunnyWords(sentence);
return 0;
}
আউটপুট
All funny words of the string 'hello, i love malayalam langauge' are : i malayalam