Dada una string que (puede) ser adjuntada con un número por fin. Debe encontrar si la longitud de la string excluyendo ese número es igual a ese número. Por ejemplo, para «holamundo10», la respuesta es verdadera ya que helloworld consta de 10 letras. La longitud de la string es inferior a 10 000.
Ejemplos:
Input: str = "geeks5" Output: Yes Explanation : As geeks is of 5 length and at last number is also 5. Input: str = "geeksforgeeks15" Output: No Explanation: As geeksforgeeks is of 13 length and at last number is 15 i.e. not equal
Preguntado en: Entrevista de Codenation
Un enfoque ingenuo es atravesar desde el inicio y recuperar el número de la string y verificar si la longitud de la string: dígitos en el número = número o no
Un método eficiente es hacer los siguientes pasos
- Atraviese la string desde el final y siga almacenando el número hasta que sea más pequeño que la longitud total de la string.
- Si el número es igual a la longitud de la string, excepto los dígitos de ese número, devuelve verdadero.
- De lo contrario, devuelve falso.
Implementación:
C++
// C++ program to check if size of string is appended // at the end or not. #include <bits/stdc++.h> using namespace std; // Function to find if given number is equal to // length or not bool isequal(string str) { int n = str.length(); // Traverse string from end and find the number // stored at the end. // x is used to store power of 10. int num = 0, x = 1, i = n - 1; for (i = n - 1; i >= 0; i--) { if ('0' <= str[i] && str[i] <= '9') { num = (str[i] - '0') * x + num; x = x * 10; if(num>=n) return false; } else break; } // Check if number is equal to string length except // that number's digits return num == i + 1; } // Drivers code int main() { string str = "geeksforgeeks13"; isequal(str) ? cout << "Yes" : cout << "No"; return 0; }
Java
// Java program to check if size of // string is appended at the end or not. import java.io.*; class GFG { // Function to find if given number is // equal to length or not static boolean isequal(String str) { int n = str.length(); // Traverse string from end and find the number // stored at the end. // x is used to store power of 10. int num = 0, x = 1, i = n - 1; for (i = n - 1; i >= 0; i--) { if ('0' <= str.charAt(i) && str.charAt(i) <= '9') { num = (str.charAt(i) - '0') * x + num; x = x * 10; if(num>=n) return false; } else break; } // Check if number is equal to string // length except that number's digits return num == i + 1; } // Drivers code static public void main(String[] args) { String str = "geeksforgeeks13"; if (isequal(str)) System.out.println("Yes"); else System.out.println("No"); } } // This Code is contributed by vt_m.
Python3
# Python 3 program to check if size of # string is appended at the end or not. # Function to find if given number # is equal to length or not def isequal(str): n = len(str) # Traverse string from end and # find the number stored at the end. # x is used to store power of 10. num = 0 x = 1 i = n - 1 for i in range(n - 1, -1,-1) : if ('0' <= str[i] and str[i] <= '9') : num = (ord(str[i]) - ord('0')) * x + num x = x * 10 if (num>=n): return false else: break # Check if number is equal to string # length except that number's digits return num == i + 1 # Driver Code if __name__ == "__main__": str = "geeksforgeeks13" print("Yes") if isequal(str) else print("No") # This code is contributed by ChitraNayal
C#
// C# program to check if size of // string is appended at the end or not. using System; class GFG { // Function to find if given number // is equal to length or not static bool isequal(string str) { int n = str.Length; // Traverse string from end and find the number // stored at the end. // x is used to store power of 10. int num = 0, x = 1, i = n - 1; for (i = n - 1; i >= 0; i--) { if ('0' <= str[i] && str[i] <= '9') { num = (str[i] - '0') * x + num; x = x * 10; if(num>=n) return false; } else break; } // Check if number is equal to string // length except that number's digits return num == i + 1; } // Drivers code static public void Main() { string str = "geeksforgeeks13"; if (isequal(str)) Console.WriteLine("Yes"); else Console.WriteLine("No"); } } // This Code is contributed by vt_m.
PHP
<?php // PHP program to check if size // of string is appended at // the end or not. // Function to find if given // number is equal to length or not function isequal($str) { $n = strlen($str); // Traverse string from end // and find the number stored // at the end. x is used to // store power of 10. $num = 0; $x = 1; $i = $n - 1; for ($i = $n - 1; $i >= 0; $i--) { if ('0' <= $str[$i] && $str[$i] <= '9') { $num = ($str[$i] - '0') * $x + $num; $x = $x * 10; if($num>=$n) return false; } else break; } // Check if number is equal // to string length except // that number's digits return $num == $i + 1; } // Driver code $str = "geeksforgeeks13"; if(isequal($str)) echo "Yes" ; else echo "No"; return 0; // This code is contributed by nitin mittal. ?>
Javascript
<script> // Javascript program to check if size of // string is appended at the end or not. // Function to find if given number is // equal to length or not function isequal(str) { let n = str.length; // Traverse string from end and find // the number stored at the end. // x is used to store power of 10. let num = 0, x = 1, i = n - 1; for(i = n - 1; i >= 0; i--) { if ('0' <= str[i] && str[i] <= '9') { num = (str[i] - '0') * x + num; x = x * 10; if (num >= n) return false; } else break; } // Check if number is equal to string // length except that number's digits return num == i + 1; } // Driver code let str = "geeksforgeeks13"; if (isequal(str)) document.write("Yes"); else document.write("No"); // This code is contributed by rag2127 </script>
Producción :
Yes
Complejidad temporal: O(n) donde n es la longitud de la string
Espacio auxiliar: O(1)
Este artículo es una contribución de Sahil Chhabra (akku) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA