Imprime todas las palabras divertidas en una string

Nos dan una frase. Nuestra tarea es imprimir todas las palabras/strings graciosas en esa oración. 
 

¿Qué es una palabra graciosa?

Invierte la string dada. Repita cada carácter de esa string, compare la diferencia absoluta en los valores ASCII de los caracteres en las posiciones 0 y 1, 1 y 2, 2 y 3 y así sucesivamente hasta el final. Si la lista de diferencias absolutas es la misma para ambas strings, de lo contrario no son divertidas. 

Ejemplos: 

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 

NOTA: Cada string de palíndromo es una string divertida, pero no al revés.

La idea es dividir la string en palabras. Para cada palabra, recorra desde ambos extremos y compare las diferencias entre los caracteres adyacentes. 

C++

// C++ program 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

Javascript

<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 Code
printFunnyWords("Miss Arora teaches us malayalam bdwy ");
 
</script>
Producción: 

Arora
us
malayalam
bdwy

 

Publicación traducida automáticamente

Artículo escrito por RishabhMalik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *