Dado un número positivo n . La tarea es verificar si la imagen especular del número es igual al número dado o no si se muestra en Seven Line Segment . Una imagen especular de un número es una duplicación reflejada del número que parece casi idéntica pero está invertida en la dirección perpendicular a la superficie del espejo.
Ejemplos:
Input : n = 101 Output: Yes Mirror image of 101 is 101 on seven line segment. So, print "Yes". Input : n = 020 Output : No
Observe cada dígito cuando se muestra en un segmento de siete líneas, solo los dígitos 0, 1, 8 permanecen iguales en su imagen especular. Entonces, para que un número sea igual a su imagen especular, debe contener solo 0, 1, 8 dígitos. Además, observe, para que dos números sean iguales, su dígito de posición correspondiente debe ser el mismo. Por lo tanto, la imagen especular también debe contener el mismo dígito en su posición de dígito correspondiente. Entonces, el número también debería ser un palíndromo.
A continuación se muestra la implementación de este enfoque:
C++
// C++ Program to check if mirror image of a number is // same if displayed in seven segment display #include <bits/stdc++.h> using namespace std; // Return "Yes", if the mirror image of number // is same as the given number // Else return "No" string checkEqual(string S) { // Checking if the number contain only 0, 1, 8. for (int i = 0; i < S.size(); i++) { if (S[i] != '1' && S[i] != '0' && S[i] != '8') { return "No"; } } int start = 0, end = S.size() - 1; // Checking if the number is palindrome or not. while (start < end) { // If corresponding index is not equal. if (S[start] != S[end]) { return "No"; } start++; end--; } return "Yes"; } int main() { string S = "101"; cout << checkEqual(S) << endl; return 0; }
Java
// Java Program to check if // mirror image of a number // is same if displayed in // seven segment display import java.io.*; class GFG { // Return "Yes", if the // mirror image of number // is same as the given // number Else return "No" static String checkEqual(String S) { // Checking if the number // contain only 0, 1, 8. for (int i = 0; i < S.length(); i++) { if (S.charAt(i) != '1' && S.charAt(i) != '0' && S.charAt(i) != '8') { return "No"; } } int start = 0, end = S.length() - 1; // Checking if the number // is palindrome or not. while (start < end) { // If corresponding // index is not equal. if (S.charAt(start) != S.charAt(end)) { return "No"; } start++; end--; } return "Yes"; } // Driver Code public static void main (String[] args) { String S = "101"; System.out.println(checkEqual(S)); } } // This code is contributed // by anuj_67.
Python3
# Python3 Program to check if mirror # image of a number is same if displayed # in seven segment display # Return "Yes", if the mirror image # of number is same as the given number # Else return "No" def checkEqual(S): # Checking if the number contain # only 0, 1, 8. for i in range(len(S)): if (S[i] != '1' and S[i] != '0' and S[i] != '8'): return "No"; start = 0; end = len(S) - 1; # Checking if the number is # palindrome or not. while (start < end): # If corresponding index is not equal. if (S[start] != S[end]): return "No"; start += 1; end -= 1; return "Yes"; # Driver Code S = "101"; print(checkEqual(S)); # This code is contributed by mits
C#
// C# Program to check if mirror image // of a number is same if displayed in // seven segment display using System; class GFG { // Return "Yes", if the mirror image // of number is same as the given // number Else return "No" static string checkEqual(string S) { // Checking if the number // contain only 0, 1, 8. for (int i = 0; i < S.Length; i++) { if (S[i] != '1' && S[i] != '0' && S[i] != '8') { return "No"; } } int start = 0, end = S.Length - 1; // Checking if the number is // palindrome or not. while (start < end) { // If corresponding index is not equal. if (S[start] != S[end]) { return "No"; } start++; end--; } return "Yes"; } // Driver Code public static void Main() { string S = "101"; Console.WriteLine(checkEqual(S)); } } // This code is contributed // by mits
PHP
<?php // PHP Program to check if mirror image // of a number is same if displayed in // seven segment display // Return "Yes", if the mirror image // of number is same as the given number // Else return "No" function checkEqual($S) { // Checking if the number contain // only 0, 1, 8. for ($i = 0; $i < strlen($S); $i++) { if ($S[$i] != '1' && $S[$i] != '0' && $S[$i] != '8') { return "No"; } } $start = 0; $end = strlen($S) - 1; // Checking if the number is // palindrome or not. while ($start < $end) { // If corresponding index is not equal. if ($S[$start] != $S[$end]) { return "No"; } $start++; $end--; } return "Yes"; } // Driver Code $S = "101"; echo checkEqual($S); // This code is contributed by ajit ?>
Javascript
<script> // Javascript Program to check if mirror image of a number is // same if displayed in seven segment display // Return "Yes", if the mirror image of number // is same as the given number // Else return "No" function checkEqual(S) { // Checking if the number contain only 0, 1, 8. for (var i = 0; i < S.length; i++) { if (S[i] != '1' && S[i] != '0' && S[i] != '8') { return "No"; } } var start = 0, end = S.length - 1; // Checking if the number is palindrome or not. while (start < end) { // If corresponding index is not equal. if (S[start] != S[end]) { return "No"; } start++; end--; } return "Yes"; } var S = "101"; document.write( checkEqual(S)); </script>
Producción
Yes
Complejidad de tiempo: O(n), donde n es el tamaño de la string dada
Espacio auxiliar: O(1), ya que no se requiere espacio adicional