给定字符串中第 Kth 个空格分隔的数字
原文:https://www . geeksforgeeks . org/kth-space-separated-number-from-给定字符串/
给定一个由空格分隔的整数组成的字符串 S ,任务是提取字符串中的 K th 号。
注:字符串中至少包含 K 个数字。
示例:
输入:S =“12 13 15”,K= 3 输出: 15 说明:以上字符串中的 3 rd 整数为 15。
输入:S=“10 20 30 40”,K = 2 输出: 20 说明:上述字符串中的 2 nd 整数为 20。
天真方法:解决问题最简单的方法是遍历字符串并记录遇到的空格数。一旦遇到K–1空格,将数字打印到下一个空格作为所需答案。
下面是上述方法的实现:
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
Python 3
# 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
java 描述语言
<script>
// javascript program for the above approach
// Function to prvar 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;
}
// Prvar 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>
Output:
40
时间复杂度: O(N),其中 N 是字符串的长度。 辅助空间: O(1)
Stringstream 方法:想法是在 C++中使用 stringstream ,它将字符串对象与流相关联,并允许我们从字符串中读取,就像它是流一样(就像 cin 一样)。
下面是上述方法的实现:
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 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
Python 3
# 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
时间复杂度: O(N),其中 N 是字符串的长度。 辅助空间: O(1)
内置 字符串 基于函数的方法:思路是使用 strtok() 函数提取按键处的字符串。使用 c_str() 函数获取字符数组的字符指针引用。
下面是上述方法的实现:
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
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
时间复杂度: O(N),其中 N 是字符串的长度。 辅助空间: O(1)
版权属于:月萌API www.moonapi.com,转载请注明出处