给定字符串“ S”(由数字组成)和整数“ X”,任务是计算满足以下条件的所有“ S”子字符串:
- 子字符串不能以数字“ 0”开头。
- 并且它代表的数字必须大于“ X”。
注意:如果选择子字符串的两种方法以不同的索引开头或结尾,则它们是不同的。
例子:
Input: S = "471", X = 47
Output: 2
Only the sub-strings "471" and "71"
satisfy the given conditions.
Input: S = "2222", X = 97
Output: 3
Valid strings are "222", "222" and "2222".
方法:
- 遍历字符串“ S”的每个数字,然后选择大于“ 0”的数字。
- 现在,从上一步中选择的字符开始,获取所有可能的子字符串,并将每个子字符串转换为整数。
- 将上一步中的整数与“ X”进行比较,如果该数字大于“ X”,则增加计数变量。
- 最后,打印计数变量的值。
下面是上述方法的实现:
C++
// C++ implementation of the approach
#include
using namespace std;
// Function that counts
// valid sub-strings
int count(string S, int X)
{
int count = 0;
const int N = S.length();
for (int i = 0; i < N; ++i) {
// Only take those numbers
// that do not start with '0'.
if (S[i] != '0') {
for (int len = 1; (i + len) <= N; ++len) {
// converting the sub-string
// starting from index 'i'
// and having length 'len' to int
// and checking if it is greater
// than X or not
if (stoi(S.substr(i, len)) > X)
count++;
}
}
}
return count;
}
// Driver code
int main()
{
string S = "2222";
int X = 97;
cout << count(S, X);
return 0;
}
Java
// Java implementation of the approach
import java.util.*;
class GFG
{
// Function that counts
// valid sub-strings
static int count(String S, int X)
{
int count = 0;
int N = S.length();
for (int i = 0; i < N; ++i)
{
// Only take those numbers
// that do not start with '0'.
if (S.charAt(i) != '0')
{
for (int len = 1;
(i + len) <= N; ++len)
{
// converting the sub-string
// starting from index 'i'
// and having length 'len' to
// int and checking if it is
// greater than X or not
int num = Integer.parseInt(S.substring(i, i + len));
if (num > X)
count++;
}
}
}
return count;
}
// Driver code
public static void main(String []args)
{
String S = "2222";
int X = 97;
System.out.println(count(S, X));
}
}
// This code is contributed by ihritik
Python3
# Python3 implementation of
# the approach
# Function that counts
# valid sub-strings
def countSubStr(S, X):
cnt = 0
N = len(S)
for i in range(0, N):
# Only take those numbers
# that do not start with '0'.
if (S[i] != '0'):
j = 1
while((j + i) <= N):
# converting the sub-string
# starting from index 'i'
# and having length 'len' to
# int and checking if it is
# greater than X or not
num = int(S[i : i + j])
if (num > X):
cnt = cnt + 1
j = j + 1
return cnt;
# Driver code
S = "2222";
X = 97;
print(countSubStr(S, X))
# This code is contributed by ihritik
C#
// C# implementation of the approach
using System;
class GFG
{
// Function that counts
// valid sub-strings
static int count(string S, int X)
{
int count = 0;
int N = S.Length;
for (int i = 0; i < N; ++i)
{
// Only take those numbers
// that do not start with '0'.
if (S[i] != '0')
{
for (int len = 1;
(i + len) <= N; ++len)
{
// converting the sub-string
// starting from index 'i'
// and having length 'len' to int
// and checking if it is greater
// than X or not
int num = Int32.Parse(S.Substring(i, len));
if (num > X)
count++;
}
}
}
return count;
}
// Driver code
public static void Main(String []args)
{
string S = "2222";
int X = 97;
Console.WriteLine(count(S, X));
}
}
// This code is contributed by ihritik
PHP
$X)
$cnt++;
}
}
}
return $cnt;
}
// Driver code
$S = "2222";
$X = 97;
echo countSubStr($S, $X);
// This code is contributed by ihritik
?>
输出:
3
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。