Print all funny words in a string

• Difficulty Level : Basic
• Last Updated : 31 May, 2021

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 the 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 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 Codeint 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 stringdef 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 codeprintFunnyWords("Miss Arora teaches us malayalam bdwy ") # This code is contributed by Prateek Bajaj

C#

 // C# program to print funny stringusing 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 Codepublic static void Main(string[] args){    GFG.printFunnyWords("Miss Arora teaches us " +                               "malayalam bdwy ");}} // This code is contributed by Shrikant13

Javascript


Output:
Arora
us
malayalam
bdwy

My Personal Notes arrow_drop_up