Cómo encontrar el índice de cualquier símbolo de moneda en una string determinada

Dada una string txt , la tarea es encontrar el índice de símbolos de moneda presentes en la string dada.
Ejemplos: 
 

Entrada: txt = «El símbolo de la moneda de EE. UU. es $»; 
Salida: 26 
Explicación: 
el símbolo $está presente en el índice 33.
Entrada: txt = “Un dólar estadounidense ($) equivale a 75,70 rupias indias.”; 
Salida: 14 
 

Enfoque ingenuo: 
el enfoque más simple para resolver el problema es hacer lo siguiente: 
 

  • Cree un conjunto de todas las monedas.
  • Recorra la string y si alguno de los símbolos de moneda presentes en el conjunto se encuentra en la string, imprima su índice.

El enfoque anterior requiere un espacio auxiliar para almacenar todas las monedas en el conjunto.

Enfoque eficiente:

  1. La idea es usar Regular Expression para resolver este problema.
  2. Cree una expresión regular para encontrar el símbolo de moneda en la string como se menciona a continuación: 
    regex = “ \\p{Sc} “;
    Donde: 
    {\\p{Sc} 
    representa cualquier signo de moneda.
    Para C++/Python, podemos usar regex = “ \\$|\\£|\\€
    Donde la expresión regular verifica si alguno de los símbolos de moneda dados ( $, £, € ) está presente en la string.
  3. Haga coincidir la string dada con la expresión regular usando Pattern.matcher() .
  4. Muestra el índice del carácter de la string para la que se encuentra una coincidencia con la expresión regular dada.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program to find indices of
// currency symbols present in a
// string using regular expression
#include <iostream>
#include <regex>
using namespace std;
 
// Function to find currency symbol
// in a text using regular expression
void findCurrencySymbol(string text)
{
 
  // Regex to find any currency
  // symbol in a text
  const regex pattern("\\$|\\£|\\€");
  for (auto it = sregex_iterator(text.begin(), text.end(), pattern);
       it != sregex_iterator(); it++)
  {
     
      // flag type for determining the matching behavior
      // here it is for matches on 'string' objects
      smatch match;
      match = *it;
      cout << match.str(0) << " - " << match.position(0) << endl;
  }
  return ;
}
 
// Driver Code
int main()
{
  string txt
      = "$27 - $21.30equal to $5.70";
  findCurrencySymbol(txt);
  return 0;
}
 
// This code is contributed by yuvraj_chandra

Java

// Java program to find indices of
// currency symbols present in a
// string using regular expression
import java.util.regex.*;
class GFG {
 
    // Function to find currency symbol
    // in a text using regular expression
    public static void findCurrencySymbol(
        String text)
    {
 
        // Regex to find any currency
        // symbol in a text
        String regex = "\\p{Sc}";
 
        // Compile the ReGex
        Pattern p = Pattern.compile(
            regex);
 
        // Find match between the
        // given string and the
        // Regex using Pattern.matcher()
        Matcher m = p.matcher(text);
 
        // Find the next subsequence
        // of the input subsequence
        // that matches the pattern
        while (m.find()) {
 
            System.out.println(
                text.charAt(m.start())
                + " - "
                + m.start());
        }
    }
    // Driver Code
    public static void main(String args[])
    {
        String txt = "$27 - $21.30"
                    + "equal to $5.70";
        findCurrencySymbol(txt);
    }
}

Python3

# Python program to find indices of
# currency symbols present in a
# string using regular expression
import re
 
# Function to find currency symbol
# in a text using regular expression
def findCurrencySymbol(text):
 
    # Regex to find any currency
    # symbol in a text
    regex = "\\$|\\£|\\€"
 
    for m in re.finditer(regex, text):
        print(text[m.start(0)], "-" ,m.start(0))
 
 
# Driver code
txt = "$27 - $21.30equal to $5.70"
findCurrencySymbol(txt)
 
# This code is contributed by yuvraj_chandra

Producción:

$ - 0
$ - 6
$ - 21

Complejidad de tiempo: O(N)

Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por prashant_srivastava 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 *