इस समस्या में हमें एक वाक्य दिया जाता है। हमारा काम वाक्य से सभी स्ट्रिंग्स को प्रिंट करना है जो कि मजेदार शब्द हैं।
मजेदार शब्द एक शब्द है जो शर्त का पालन करता है - स्ट्रिंग के आसन्न वर्णों और इसके विपरीत स्ट्रिंग के बीच पूर्ण अंतर बराबर है।
|string[0] - string[1]| = |revstring[0]-revstring[1]|
आइए समस्या को समझने के लिए एक उदाहरण लेते हैं -
Input: string = ‘ABRS’ Output: Yes Explanation: Reverse string = SRBA |A-B| = 1 = |S-R| |B-R| = 16 = |R-B| |B-A| = 1 = |R-S|
इस समस्या को हल करने के लिए, हमें दिए गए वाक्य से प्रत्येक स्ट्रिंग को निकालना होगा। और अगर स्ट्रिंग एक अजीब स्ट्रिंग है तो प्रिंट करें।
मजेदार स्ट्रिंग की जांच करें - इसके लिए हम स्ट्रिंग को दोनों सिरों से यानि शुरुआत से और अंत से पार करेंगे। और स्ट्रिंग के आसन्न वर्णों के बीच पूर्ण अंतर की तुलना करें और यदि अंतर समान नहीं है तो झूठी वापसी करें।
नीचे दिया गया कोड हमारे तर्क को लागू करेगा -
उदाहरण
#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