# Kth space-separated number from a given string

Last Updated : 22 Feb, 2023

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

 ``

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

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