Skip to content
Related Articles

Related Articles

Print all funny words in a string
  • Difficulty Level : Basic
  • Last Updated : 08 Nov, 2020

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


Output:

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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :