Print all funny words in a string - GeeksforGeeks

31 May, 2021
We are given a sentence. Our task is to print all funny words/strings in that sentence.  
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++
Java
Python3
C#
Javascript
// 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 Codeint main(){    printFunnyWords("Miss Arora teaches us malayalam bdwy ");     return 0;} // This code is contributed by// sanjeev2552
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 ");    }}
# 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# 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
<script> // Javascript pprogram to print all// funny words in a string function checkFunny(word){    var i = 1;    var j = word.length - 2;    word= (word.toLowerCase());     while (i <= j)    {        if (Math.abs(word[i].charCodeAt(0) -                word[i - 1].charCodeAt(0)) !=                    Math.abs(word[j].charCodeAt(0) -                                    word[j + 1].charCodeAt(0)))            return false;        i++;        j--;    }    return true;} function printFunnyWords(str){         // to extract last word of sentence    str += " ";     // to word stores each word of sentence    var word = "";     for (var i = 0; i < str.length; i++)    {        var ch = str[i];         // extracting each wor        if (ch != ' ')            word += ch;        else        {            if (checkFunny(word))                document.write( word + "<br>");            word = "";        }    }} // Driver CodeprintFunnyWords("Miss Arora teaches us malayalam bdwy "); </script>
Arora
us
malayalam
bdwy
 
YouTubeGeeksforGeeks507K subscribersPrint all funny words in a string | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 3:19•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=f0GkhCOX5eY" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
Prateek Bajaj
shrikanth13
sanjeev2552
noob2000
palindrome
Strings
Strings
palindrome
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Top 50 String Coding Problems for Interviews
Print all the duplicates in the input string
Vigenère Cipher
sprintf() in C
String class in Java | Set 1
Convert character array to string in C++
Program to count occurrence of a given character in a string
How to Append a Character to a String in C
Print all subsequences of a string
Naive algorithm for Pattern Searching