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> |
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); |
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); |
20
Time Complexity: O(N), where N is the length of the string.
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!