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

 `// C++ Program for the above approach` `#include ``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 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`

## 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`
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 ``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 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`

## 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 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`
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 ``#include ``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`
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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

My Personal Notes arrow_drop_up