Related Articles

Related Articles

Kth space-separated number from a given string
  • Difficulty Level : Medium
  • Last Updated : 09 Nov, 2020

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program for
# the above approach
 
# Function to prkth 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 spilt
  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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 spilt
  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

chevron_right


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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Output

20 















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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :