K-ésimo número separado por espacios de una string dada

Dada una string S que consta de enteros separados por espacios, la tarea es extraer el número K presente en la string.

Nota: La string contiene al menos K números.

Ejemplos:

Entrada: S = “12 13 15”, K= 3
Salida: 15
Explicación: El tercer entero en la string anterior es 15.

Entrada: S = “10 20 30 40”, K = 2
Salida: 20
Explicación: El segundo entero en la string anterior es 20.

Enfoque ingenuo: el enfoque más simple para resolver el problema es atravesar la string y llevar la cuenta de los espacios encontrados. Una vez que encuentre K – 1 espacios, escriba el número hasta el siguiente espacio como la respuesta requerida.

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

C++

// C++ Program for the above approach
 
#include <iostream>
using namespace std;
 
// Function to print kth integer
// in a given string
void print_kth_string(string s, int K)
{
    // Size of the string
    int N = s.length();
 
    // Pointer for iteration
    int i;
    for (i = 0; i < N; i++) {
        // If space char found
        // decrement K
        if (s[i] == ' ')
            K--;
 
        // If K becomes 1, the next
        // string is the required one
        if (K == 1)
            break;
    }
 
    // Print the required number
    while (i++ < N && s[i] != ' ')
        cout << s[i];
}
 
// Driver Code
int main()
{
    // Given string
    string s("10 20 30 40");
 
    // Given K
    int K = 4;
 
    // Function call
    print_kth_string(s, K);
}

Java

// Java program for the above approach
import java.io.*;
 
class GFG{
  
// Function to print kth integer
// in a given string
static void print_kth_string(String s, int K)
{
     
    // Size of the string
    int N = s.length();
  
    // Pointer for iteration
    int i;
     
    for(i = 0; i < N; i++)
    {
         
        // If space char found
        // decrement K
        if (s.charAt(i) == ' ')
            K--;
  
        // If K becomes 1, the next
        // string is the required one
        if (K == 1)
            break;
    }
  
    // Print the required number
    while (i++ < N - 1 && s.charAt(i) != ' ')
        System.out.print(s.charAt(i));
}
  
// Driver Code
public static void main (String[] args)
{
     
    // Given string
    String s = "10 20 30 40";
  
    // Given K
    int K = 4;
  
    // Function call
    print_kth_string(s, K);
}
}
 
// This code is contributed by sanjoy_62

Python3

# Python3 program for
# the above approach
 
# Function to print kth integer
# in a given string
def print_kth_string(s, K):
   
    # Size of the string
    N = len(s);
 
    for i in range(0, N, 1):
 
        # If space char found
        # decrement K
        if (s[i] == ' '):
            K -= 1;
 
        # If K becomes 1, the next
        # string is the required one
        if (K == 1):
            break;
 
    # Print required number
    while (i < N):
        if(s[i] != ' '):
            print(s[i], end = "");
        i += 1;
 
# Driver Code
if __name__ == '__main__':
   
    # Given string
    s = "10 20 30 40";
 
    # Given K
    K = 4;
 
    # Function call
    print_kth_string(s, K);
 
# This code is contributed by Rajput-Ji

C#

// C# program for the above approach 
using System;
 
class GFG{
  
// Function to print kth integer
// in a given string
static void print_kth_string(string s, int K)
{
     
    // Size of the string
    int N = s.Length;
  
    // Pointer for iteration
    int i;
     
    for(i = 0; i < N; i++)
    {
         
        // If space char found
        // decrement K
        if (s[i] == ' ')
            K--;
  
        // If K becomes 1, the next
        // string is the required one
        if (K == 1)
            break;
    }
  
    // Print the required number
    while (i++ < N - 1 && s[i] != ' ')
        Console.Write(s[i]);
}
  
// Driver Code
public static void Main ()
{
     
    // Given string
    string s = "10 20 30 40";
  
    // Given K
    int K = 4;
  
    // Function call
    print_kth_string(s, K);
}
}
 
// This code is contributed by sanjoy_62

Javascript

<script>
// javascript program for the above approach
 
    // Function to print kth integer
    // in a given string
    function print_kth_string( s , K) {
 
        // Size of the string
        var N = s.length;
 
        // Pointer for iteration
        var i;
 
        for (i = 0; i < N; i++) {
 
            // If space char found
            // decrement K
            if (s.charAt(i) == ' ')
                K--;
 
            // If K becomes 1, the next
            // string is the required one
            if (K == 1)
                break;
        }
 
        // Print the required number
        while (i++ < N - 1 && s.charAt(i) != ' ')
            document.write(s.charAt(i));
    }
 
    // Driver Code
     
 
        // Given string
        var s = "10 20 30 40";
 
        // Given K
        var K = 4;
 
        // Function call
        print_kth_string(s, K);
 
// This code is contributed by umadevi9616
</script>
Producción: 

40

 

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

Enfoque de Stringstream : La idea es usar stringstream en C++ que asocia un objeto de string con una secuencia y nos permite leer la string como si fuera una secuencia (como cin). 

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 print Kth integer
// from a given string
void print_kth_string(string str, int K)
{
    // Split input into words
    // using stringstream
    stringstream iss(str);
 
    // Stores individual words
    string kth;
 
    // Extract words from stream
    while (iss >> kth && K) {
        K--;
 
        // If kth position
        // is reached
        if (K == 0) {
            cout << kth;
            break;
        }
    }
}
 
// Driver Code
int main()
{
    // Given string
    string s("10 20 30 40");
 
    // Given K
    int K = 4;
 
    // Function call
    print_kth_string(s, K);
}

Java

// Java program for
// the above approach
import java.util.*;
class GFG{
 
// Function to print Kth integer
// from a given String
static void print_kth_String(String str,
                             int K)
{
  // Split input into words
  // using split
  String[] iss = str.split(" ");
  K--;
   
  System.out.print(iss[K]);
}
 
// Driver Code
public static void main(String[] args)
{
  // Given String
  String s = ("10 20 30 40");
 
  // Given K
  int K = 4;
 
  // Function call
  print_kth_String(s, K);
}
}
 
// This code is contributed by Rajput-Ji

Python3

# Python3 program for the above approach
 
# Function to print Kth integer
# from a given string
def print_kth_string(str1, K):
     
    # Split input into words
    # using stringstream
    st = str1.split(" ")
 
    # Stores individual words
    print(st[K - 1])
 
# Driver Code
if __name__ == '__main__':
     
    # Given string
    s = "10 20 30 40"
 
    # Given K
    K = 4
 
    # Function call
    print_kth_string(s, K)
 
# This code is contributed by SURENDRA_GANGWAR

C#

// C# program for
// the above approach
using System;
class GFG{
 
// Function to print Kth integer
// from a given String
static void print_kth_String(String str,
                             int K)
{
  // Split input into words
  // using split
  String[] iss = str.Split(' ');
   
  K--; 
  Console.Write(iss[K]);
}
 
// Driver Code
public static void Main(String[] args)
{
  // Given String
  String s = ("10 20 30 40");
 
  // Given K
  int K = 4;
 
  // Function call
  print_kth_String(s, K);
}
}
 
// This code is contributed by Rajput-Ji
Producción

40

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

Enfoque basado en funciones de string integradas: la idea es utilizar la función strtok() para extraer la string en la tecla. Use la función c_str() para obtener la referencia del puntero de caracteres de una array de caracteres.

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

C++

// C++ program of the above approach
 
#include <cstring>
#include <iostream>
using namespace std;
 
// Function to extract integer at key
// position in the given string
void print_kth_string(string str, int K)
{
    // strtok(): Extracts the number at key
    // c_str(): Type cast string to char*
    char* s = strtok((char*)str.c_str(),
                     " ");
 
    while (K > 1) {
        // Get the token at position -> key
        s = strtok(NULL, " ");
        K--;
    }
 
    // Print the kth integer
    cout << string(s) << " ";
}
 
// Driver Code
int main()
{
    // Given string
    string s("10 20 30 40");
 
    // Given K
    int K = 2;
 
    // Function call
    print_kth_string(s, K);
 
    return 0;
}

Java

// Java program of the
// above approach
import java.util.*;
class GFG{
 
// Function to extract integer
// at key position in the given String
static void print_kth_String(String str,
                             int K)
{
  // StringTokenizer(): Extracts
  // the number at key
  // c_str(): Type cast
  // String to char*
  StringTokenizer st =
        new StringTokenizer(str);
  int count = 1;
   
  while (st.hasMoreTokens() && K > 0 )
  {
    if(count == K)
      System.out.println(st.nextToken());
    count++;
    st.nextToken();
  }
}
 
// Driver Code
public static void main(String[] args)
{
  // Given String
  String s = ("10 20 30 40");
 
  // Given K
  int K = 2;
 
  // Function call
  print_kth_String(s, K);
}
}
 
// This code is contributed by 29AjayKumar

C#

// C# program of the
// above approach
using System;
class GFG{
 
// Function to extract integer
// at key position in the given String
static void print_kth_String(String str,
                             int K)
{
  // StringTokenizer(): Extracts
  // the number at key
  // c_str(): Type cast
  // String to char*
  String[] iss = str.Split(' ');
   
  K--; 
  Console.Write(iss[K]);
}
 
// Driver Code
public static void Main(String[] args)
{
  // Given String
  String s = ("10 20 30 40");
 
  // Given K
  int K = 2;
 
  // Function call
  print_kth_String(s, K);
}
}
 
// This code is contributed by Rajput-Ji
Producción

20 

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 prernaajitgupta 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 *