Costo mínimo para convertir una string dada para que consista solo en vocales

Dada la string str de alfabetos en minúsculas, la tarea es encontrar el costo mínimo para cambiar la string de entrada en una string que contiene solo vocales. Cada consonante se cambia a las vocales más cercanas. El costo se define como la diferencia absoluta entre el valor ASCII de consonante y vocal.

Ejemplos:

Entrada: str = “abcde”
Salida: 4
Explicación:
Aquí, a y e ya son vocales pero b, c y d son consonantes. Entonces b, c y d se cambian a las vocales más cercanas como:
1. b –> a = |98 – 97| = 1, 
2. c –> a = |99 – 97| = 2 o c –> e = |99 – 101| = 2 ( al mínimo el costo), 
3. d –> e = |100 – 101| = 1.
Por lo tanto, el costo mínimo es 1 + 2 + 1 = 4.

Entrada: str = “aaa” 
Salida: 0
Explicación: 
No hay consonante en la string.

Enfoque: La idea es atravesar la cuerda y reemplazar cada consonante con su vocal más cercana y agregar el costo como la diferencia entre las consonantes y la vocal cambiada. Imprime el costo después de todas las operaciones.

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

C++

// C++ program for the above approach
#include<bits/stdc++.h>
using namespace std;
 
// Function to find the minimum cost
int min_cost(string st)
{
     
    // Store vowels
    string vow = "aeiou";
    int cost = 0;
 
    // Loop for iteration of string
    for(int i = 0; i < st.size(); i++)
    {
        vector<int> costs;
 
        // Loop to calculate the cost
        for(int j = 0; j < 5; j++)
            costs.push_back(abs(st[i] - vow[j]));
             
        // Add minimum cost
        cost += *min_element(costs.begin(),
                            costs.end());
    }
    return cost;
}
 
// Driver Code
int main()
{
     
    // Given String
    string str = "abcde";
     
    // Function Call
    cout << (min_cost(str));
}
 
// This code is contributed by grand_master

Java

// Java program for the above approach
import java.io.*;
import java.util.*;
 
class GFG{
 
// Function to find the minimum cost
static int min_cost(String st)
{
     
    // Store vowels
    String vow = "aeiou";
    int cost = 0;
 
    // Loop for iteration of string
    for(int i = 0; i < st.length(); i++)
    {
        ArrayList<Integer> costs = new ArrayList<>();
 
        // Loop to calculate the cost
        for(int j = 0; j < 5; j++)
            costs.add(Math.abs(st.charAt(i) -
                              vow.charAt(j)));
             
        // Add minimum cost
        int minx = Integer.MAX_VALUE;
        for(int x : costs)
        {
            if(x < minx)
            {
                minx = x;
            }
        }
        cost += minx;
    }
    return cost;
}
 
// Driver Code
public static void main(String[] args)
{
     
    // Given string
    String str = "abcde";
     
    // Function call
    System.out.println(min_cost(str));
}
}
 
// This code is contributed by rutvik_56

Python3

# Python3 program for above approach
 
# Function to find the minimum cost
def min_cost(st):
 
    # Store vowels
    vow = "aeiou"
    cost = 0
 
    # Loop for iteration of string
    for i in range(len(st)):
        costs = []
 
        # Loop to calculate the cost
        for j in range(5):
            costs.append(abs(ord(st[i])-ord(vow[j])))
             
        # Add minimum cost
        cost += min(costs)
    return cost
 
# Driver Code
 
# Given String
str = "abcde"
 
# Function Call
print(min_cost(str))

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
class GFG{
  
// Function to find the minimum cost
static int min_cost(string st)
{
     
    // Store vowels
    string vow = "aeiou";
    int cost = 0;
  
    // Loop for iteration of string
    for(int i = 0; i < st.Length; i++)
    {
        List<int> costs = new List<int>();
  
        // Loop to calculate the cost
        for(int j = 0; j < 5; j++)
            costs.Add(Math.Abs(st[i] -
                              vow[j]));
              
        // Add minimum cost
        int minx = Int32.MaxValue;
        foreach(int x in costs)
        {
            if(x < minx)
            {
                minx = x;
            }
        }
        cost += minx;
    }
    return cost;
}
  
// Driver Code
public static void Main()
{
      
    // Given string
    string str = "abcde";
      
    // Function call
    Console.WriteLine(min_cost(str));
}
}
 
// This code is contributed by code_hunt

Javascript

<script>
 
// JavaScript program for above approach
 
// Function to find the minimum cost
function min_cost(st){
 
    // Store vowels
    let vow = "aeiou"
    let cost = 0
 
    // Loop for iteration of string
    for(let i=0;i<st.length;i++){
        let costs = []
 
        // Loop to calculate the cost
        for(let j = 0; j < 5; j++)
            costs.push(Math.abs(st.charCodeAt(i)-vow.charCodeAt(j)))
             
        // Add minimum cost
 
        cost += Math.min(...costs)
    }
    return cost
}
 
// Driver Code
 
// Given String
let str = "abcde"
 
// Function Call
document.write(min_cost(str),"</br>")
 
 
// This code is contributed by shinjanpatra
 
</script>
Producción:

4

Complejidad de tiempo: O(N), donde N es la longitud de la string.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

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