We are given a sentence. Our task is to print all funny words/strings in that sentence.
What is a funny word ?
Reverse the given string. Iterate through each character of that string, compare the absolute difference in the ASCII values of the characters at positions 0 and 1, 1 and 2, 2 and 3 and so on to the end. If the list of absolute differences is the same for both strings, they are funny otherwise not.
Examples:
Input : HKMNPS Output : Yes Let r be the reverse of original string s s = "HKMNPS" r = "SPNMKH" |H-K| = 3 = |S-P| |K-M| = 2 = |P-N| |M-N| = 1 = |N-M| |N-P| = 2 = |M-K| |P-S| = 3 = |K-H| Since each comparison is equal so given string is funny Input : bdwy Output : No
NOTE : Every palindrome string is a funny string but not vice-versa.
The idea is to split string into words. For every word, traverse it from both ends and compare differences between adjacent characters.
C++
// C++ pprogram to print all // funny words in a string #include <bits/stdc++.h> using namespace std; bool checkFunny(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) { // to extract last word of sentence str += " " ; // to word stores each word of sentence string word = "" ; for ( int i = 0; i < str.length(); i++) { char ch = str[i]; // extracting each wor if (ch != ' ' ) word += ch; else { if (checkFunny(word)) cout << word << endl; word = "" ; } } } // Driver Code int main() { printFunnyWords( "Miss Arora teaches us malayalam bdwy " ); return 0; } // This code is contributed by // sanjeev2552 |
Java
class Funny { static boolean checkFunny(String word) { int i = 1 ; int j = word.length() - 2 ; word = word.toLowerCase(); while (i <= j) { if ((Math.abs(word.charAt(i) - word.charAt(i - 1 ))) != Math.abs((word.charAt(j) - word.charAt(j + 1 )))) return false ; i++; j--; } return true ; } static void printFunnyWords(String str) { // to extract last word of sentence str = str + " " ; // to word stores each word of sentence String word = "" ; for ( int i = 0 ; i < str.length(); i++) { char ch = str.charAt(i); // extracting each word if (ch != ' ' ) word = word + ch; else { if (Funny.checkFunny(word)) System.out.println(word); word = "" ; } } } public static void main(String[] args) { Funny.printFunnyWords( "Miss Arora teaches us malayalam bdwy " ); } } |
Python3
# Python program to print all funny words in a string def checkFunny(word): i = 1 j = len (word) - 2 word = word.lower() while (i < = j): if (( abs ( ord (word[i]) - ord (word[i - 1 ]))) ! = abs (( ord (word[j]) - ord (word[j + 1 ])))): return False i = i + 1 j = j - 1 return True def printFunnyWords( str ): # to extract last word of sentence str = str + " " # to word stores each word of sentence word = "" i = 0 for i in range ( len ( str )): ch = str [i] # extracting each word if (ch ! = ' ' ): word = word + ch else : if (checkFunny(word)): print (word) word = "" # Driver code printFunnyWords( "Miss Arora teaches us malayalam bdwy " ) # This code is contributed by Prateek Bajaj |
C#
// C# program to print funny string using System; class GFG { public static bool checkFunny( string word) { int i = 1; int j = word.Length - 2; word = word.ToLower(); while (i <= j) { if ((Math.Abs(word[i] - word[i - 1])) != Math.Abs((word[j] - word[j + 1]))) { return false ; } i++; j--; } return true ; } public static void printFunnyWords( string str) { // to extract last word of sentence str = str + " " ; // to word stores each word of sentence string word = "" ; for ( int i = 0; i < str.Length; i++) { char ch = str[i]; // extracting each word if (ch != ' ' ) { word = word + ch; } else { if (GFG.checkFunny(word)) { Console.WriteLine(word); } word = "" ; } } } // Driver Code public static void Main( string [] args) { GFG.printFunnyWords( "Miss Arora teaches us " + "malayalam bdwy " ); } } // This code is contributed by Shrikant13 |
Arora us malayalam bdwy
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.