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++ 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 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 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# 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 |
<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> |
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++ 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 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 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# 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 |
// 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); |
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++ 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 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 |
# 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# 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 |
// 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); |
20
Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)