Dada una array de caracteres arr[][] de dimensiones 3 * N , que consta de tres caracteres { # , * , . }, la tarea es encontrar las vocales ( A, E, I, O, U ) representadas por ‘*’ de la string dada.
Nota : la vocal A se denota en un bloque de 3 × 3 , como se muestra en los ejemplos a continuación.
Explicación:
Entrada: N = 18
* . * # * * * # * * * # * * * . * . * . * # * . * # . * . # * * * * * * * * * # * * * # * * * # * * * * . *Salida: U#O#I#E#A
Entrada: N = 12
* . * # . * * * # . * . * . * # . . * . # * * * * * * # . * * * # * . *Salida: U#I#A
Enfoque: La idea es observar el patrón de índices de fila y de columna de los puntos para cada vocal {‘A’, ‘E’, ‘I’, ‘O’, ‘E’} y verificar las siguientes condiciones para cada j ª columna:
- Inicialice el resultado final, res como una string vacía
- Si arr[0][j] es igual a ‘#’ , agregue «#» al resultado final.
- Si arr[0][j] es igual a ‘.’ y arr[1][j] y arr[2][j] son ambos iguales a ‘.’ , denota un espacio vacío.
- Si arr[0][j] es igual a ‘.’ y arr[0][j + 2] es igual a ‘.’ y arr[2][j + 1] es igual a ‘.’ , luego agregue «A» al resultado final.
- Si arr[0][j + 1] es igual a ‘.’ y arr[1][j + 1] es igual a ‘.’ , luego agregue » U» al resultado final.
- Si arr[0][j + 1] no es igual a ‘.’ y arr[1][j + 1] es igual a ‘.’ , luego agregue «O» al resultado final.
- Si arr[1][j] es igual a ‘.’ y arr[1][j + 2] es igual a ‘.’ , luego agregue «I» al resultado final.
- De lo contrario, agregue » E» al resultado final.
A continuación se muestra la implementación del enfoque anterior:
C++
#include <bits/stdc++.h> using namespace std; int main() { char arr[3][18] = { '*', '.', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '.', '*', '.', '*', '.', '*', '#', '*', '.', '*', '#', '.', '*', '.', '#', '*', '*', '*', '*', '*', '*', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '*', '.', '*' }; // Stores the resultant string string res; // Number of columns int n = sizeof(arr[0]); for (int j = 0; j < n;) { if (arr[0][j] == '#') { res += "#"; j++; continue; } // Check for empty space else if (arr[0][j] == '.' && arr[1][j] && arr[2][j] == '.') { j++; // No need to append to // resultant string continue; } // Check for 'A'. else if (arr[0][j] == '.' && arr[0][j + 2] == '.' && arr[2][j + 1] == '.') { res += "A"; } // Check for 'U' else if (arr[0][j + 1] == '.' and arr[1][j + 1] == '.') { res += 'U'; } // Checking for 'O' else if (arr[1][j + 1] == '.') { res += 'O'; } // Check for 'I' else if (arr[1][j] == '.' and arr[1][j + 2] == '.') { res += 'I'; } // Otherwise, 'E' else { res += "E"; } j += 3; } cout << res; }
Java
import java.util.*; class GFG{ public static void main (String[] args) { char arr[][] = { { '*', '.', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '.', '*', '.' }, { '*', '.', '*', '#', '*', '.', '*', '#', '.', '*', '.', '#', '*', '*', '*', '*', '*', '*' }, { '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '*', '.', '*' } }; // Stores the resultant string String res = ""; // Number of columns int n = arr[0].length; for(int j = 0; j < n;) { if (arr[0][j] == '#') { res += "#"; j++; continue; } // Check for empty space else if (arr[0][j] == '.' && arr[1][j] == '.' && arr[2][j] == '.') { j++; // No need to append to // resultant string continue; } // Check for 'A'. else if (arr[0][j] == '.' && arr[0][j + 2] == '.' && arr[2][j + 1] == '.') { res += "A"; } // Check for 'U' else if (arr[0][j + 1] == '.' && arr[1][j + 1] == '.') { res += 'U'; } // Checking for 'O' else if (arr[1][j + 1] == '.') { res += 'O'; } // Check for 'I' else if (arr[1][j] == '.' && arr[1][j + 2] == '.') { res += 'I'; } // Otherwise, 'E' else { res += "E"; } j += 3; } System.out.println(res); } } // This code is contributed by offbeat
Python3
# Python3 code for the # above approach def helper(arr): # Stores the resultant # string res = "" # Number of columns n = 18 for j in range(n): if (arr[0][j] == '#'): res += "#" j += 1 continue # Check for empty space elif(arr[0][j] == '.' and arr[1][j] == '.' and arr[2][j] == '.'): j += 1 continue # Check for 'A'. elif(j < n - 2 and arr[0][j] == '.' and arr[0][j + 2] == '.' and arr[2][j + 1] == '.'): res += "A" j += 3 continue # Check for 'U' elif(j < n - 1 and arr[0][j + 1] == '.' and arr[1][j + 1] == '.'): res += 'U' j += 3 continue # Checking for 'O' elif(j < n - 1 and arr[1][j + 1] == '.'): res += 'O' j += 3 continue # Check for 'I' elif(j < n - 2 and arr[1][j] == '.' and arr[1][j + 2] == '.'): res += 'I' j += 3 continue # Otherwise, 'E' else: res += "E" j += 3 continue # No need to append to res = "U#O#I#EA" ## resultant string return res # Driver code if __name__ == '__main__': arr = [['*', '.', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '.', '*', '.'], ['*', '.', '*', '#', '*', '.', '*', '#', '.', '*', '.', '#', '*', '*', '*', '*', '*', '*'], ['*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '*', '.', '*']] print(helper(arr)) # This code is contributed by bgangwar59
C#
using System; class GFG{ public static void Main(String[] args) { char [,]arr = { { '*', '.', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '.', '*', '.' }, { '*', '.', '*', '#', '*', '.', '*', '#', '.', '*', '.', '#', '*', '*', '*', '*', '*', '*' }, { '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '*', '.', '*' } }; // Stores the resultant string String res = ""; // Number of columns int n = arr.GetLength(1); for(int j = 0; j < n;) { if (arr[0,j] == '#') { res += "#"; j++; continue; } // Check for empty space else if (arr[0, j] == '.' && arr[1, j] == '.' && arr[2, j] == '.') { j++; // No need to append to // resultant string continue; } // Check for 'A'. else if (arr[0, j] == '.' && arr[0, j + 2] == '.' && arr[2, j + 1] == '.') { res += "A"; } // Check for 'U' else if (arr[0, j + 1] == '.' && arr[1, j + 1] == '.') { res += 'U'; } // Checking for 'O' else if (arr[1, j + 1] == '.') { res += 'O'; } // Check for 'I' else if (arr[1, j] == '.' && arr[1, j + 2] == '.') { res += 'I'; } // Otherwise, 'E' else { res += "E"; } j += 3; } Console.WriteLine(res); } } // This code is contributed by PrinciRaj1992
Javascript
<script> let arr = [ [ '*', '.', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '.', '*', '.' ], [ '*', '.', '*', '#', '*', '.', '*', '#', '.', '*', '.', '#', '*', '*', '*', '*', '*', '*' ], [ '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '#', '*', '*', '*', '*', '.', '*' ] ]; // Stores the resultant string let res = ""; // Number of columns let n = arr[0].length; for(let j = 0; j < n;) { if (arr[0][j] == '#') { res += "#"; j++; continue; } // Check for empty space else if (arr[0][j] == '.' && arr[1][j] == '.' && arr[2][j] == '.') { j++; // No need to append to // resultant string continue; } // Check for 'A'. else if (arr[0][j] == '.' && arr[0][j + 2] == '.' && arr[2][j + 1] == '.') { res += "A"; } // Check for 'U' else if (arr[0][j + 1] == '.' && arr[1][j + 1] == '.') { res += 'U'; } // Checking for 'O' else if (arr[1][j + 1] == '.') { res += 'O'; } // Check for 'I' else if (arr[1][j] == '.' && arr[1][j + 2] == '.') { res += 'I'; } // Otherwise, 'E' else { res += "E"; } j += 3; } document.write(res); // This code is contributed by divyeshrabadiya07. </script>
U#O#I#EA
Complejidad temporal: O(N)
Espacio auxiliar : O(1)
Publicación traducida automáticamente
Artículo escrito por ronitshrivastav447 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA