Esse problema é uma mentira, todo o mundo sabe que huehuehue é a risada mais engraçada que tem.
Descrição
Solução
Você pode tomar dois passos simples para resolver este problema:
Tirar todas as letras que não são vogais da risada original, ficando com uma nova risada agora apenas com as vogais;
Você pode comparar a risada com vogais com uma versão da risada das vogais, só que invertida. Neste caso, se as duas risadas, a normal e a invertida, forem iguais, então imprimir S, senão imprimir N.
Se preferir, você pode fazer o passo 2 fazendo um for que vai do começo até a metade comparando a primeira letra com a última, a segunda com a penúltima, a terceira com a antipenúltima e assim sucessivamente. Na minha implementação em C eu inclusive ignorei o primeiro passo completamente, usando um artifício de que eu só comparo letras se ambas forem vogais e ignorando as consoantes presentes.
#include<string.h>#include<stdio.h>intvogal(char letra){switch(letra){case'a':case'e':case'i':case'o':case'u':return1;default:return0; }}intmain(){int i, f;int engracada;char risada[51];scanf("%s",&risada); i =0; f =strlen(risada)-1; engracada =1;while(i < f){if(vogal(risada[i])&&vogal(risada[f])){if(risada[i] != risada[f]){ engracada =0;break; }++i;--f; }else{if(!vogal(risada[i])) ++i;if(!vogal(risada[f])) --f; } }printf("%c\n", engracada ?'S':'N');return0;}
#include<iostream>usingnamespace std;boolvogal(char letra){switch(letra){case'a':case'e':case'i':case'o':case'u':returntrue;default:returnfalse; }}intmain(){int n;bool engracada; string risada, soVogal; cin >> risada; soVogal ="";for(int i =0; i <risada.length(); ++i){if(vogal(risada[i])) soVogal +=risada[i]; } engracada =true; n =soVogal.length();for(int i =0; i < n/2; ++i){if(soVogal[i] !=soVogal[n - i -1]){ engracada =false;break; } } cout << (engracada ?'S':'N') << endl;return0;}