Friday, September 27, 2024
Google search engine
HomeData Modelling & AIKth space-separated number from a given string

Kth space-separated number from a given string

Given a string S consisting of space-separated integers, the task is to extract the Kth number present in the string.

Note: The string contains at least K numbers in it.

Examples:

Input: S = “12 13 15”, K= 3
Output: 15
Explanation: The 3rd integer in the above string is 15.

Input: S = “10 20 30 40”, K = 2
Output: 20
Explanation: The 2nd integer in the above string is 20.

Naive Approach: The simplest approach to solve the problem is to traverse the string and keep a count of spaces encountered. Once, K – 1 spaces are encountered, print the number up to the next space as the required answer.

Below is the implementation of the above approach:

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>


Output: 

40

 

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)

Stringstream Approach: The idea is to use stringstream in C++ which associates a string object with a stream and allowing us to read from the string as if it were a stream (like cin). 

Below is the implementation of the above approach: 

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


Javascript




// Function to print Kth integer from a given string
function print_kth_String(str, K) {
    // Split input into words using split
    let iss = str.split(" ");
    K--;
    console.log(iss[K]);
}
 
// Driver Code
let s = "10 20 30 40";
let K = 4;
 
// Function call
print_kth_String(s, K);


Output

40

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)

Built-in String Functions based Approach: The idea is to use strtok() function to extract the string at the key. Use c_str() function to get the char pointer reference of an array of the characters.

Below is the implementation of the above approach:

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


Python3




# Python code of the above approach
 
import re
 
# Function to extract integer at key
# position in the given string
def print_kth_string(string, K):
    # split the string using space as a separator
    s = re.split(" ", string)
 
    # return the Kth element of the split string
    return s[K-1]
 
# Driver Code
if __name__ == '__main__':
    # Given string
    s = "10 20 30 40"
 
    # Given K
    K = 2
 
    # Function call
    print(print_kth_string(s, K))


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


Javascript




// Function to extract integer at key position in the given string
function print_kth_string(str, K) {
    // Split input string into words using split
    let words = str.split(" ");
 
    // Print the Kth integer
    console.log(words[K-1]);
}
 
// Driver Code
let s = "10 20 30 40";
let K = 2;
 
// Function call
print_kth_string(s, K);


Output

20 

Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)

Feeling lost in the world of random DSA topics, wasting time without progress? It’s time for a change! Join our DSA course, where we’ll guide you on an exciting journey to master DSA efficiently and on schedule.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

RELATED ARTICLES

Most Popular

Recent Comments