我已经解决了该语句,并且测试用例成功,但是仍然提交了 WRONG ANSWER 。请检查并告诉我我错了。
问题陈述-
Ksenia非常喜欢读书,因此每天她都会从她最喜欢的书中读一段片段开始,然后再开始其余的例行工作。片段只是文本的子字符串。 Ksenia有点迷信,她认为,如果阅读的片段以字符串KICK开头,然后以0个或更多字符继续,最后以字符串START结尾,即使整个片段意义不大,她的一天也会很幸运。 / p>
鉴于书中的文字,计算出Ksenia在书变老之前需要阅读的其他幸运片段的数量,她需要再购买一本。即使两个片段在文本中的不同位置处开始或结束,即使它们读取的内容相同,它们也被认为是不同的。另外请注意,不同的幸运片段可能会重叠。
输入 输入的第一行给出了测试用例T的数量。后面的T行,每行包含一个仅包含大写英文字母的字符串S。
输出 对于每个测试用例,输出一行包含Case #x:y的行,其中x是测试用例的编号(从1开始),y是此测试用例的文本中不同的幸运片段的数量。
限制 内存限制:1 GB。 1≤T≤100。 S仅包含大写英文字母。
测试集1 时间限制:20秒。 1≤| S | ≤1000。
测试集2 时间限制:40秒。 1≤| S | ≤105。
样品
输入
3
AKICKSTARTPROBLEMNAMEDKICKSTART
STARTLUCKYKICK
KICKXKICKXSTARTXKICKXSTART
输出
案例1:3
案例2:0
案例3:5
在第一个测试用例中,有三个幸运的片段,分别是KICKSTARTPROBLEMNAMEDKICKSTART和两次KICKSTART。第二个测试用例中的文本根本没有任何幸运的片段。
我的解决方案-
using System;
using System.Linq;
namespace Google_KS_Round_G_2020
{
class Program
{
static void Main(string[] args)
{
int t = Convert.ToInt32(Console.ReadLine());
for (int testCase = 1; testCase <= t; testCase++)
{
var conditionInput = RemoveWhitespace(Console.ReadLine());
int matchCount = Find(conditionInput);
Console.WriteLine($"Case #{testCase}: {matchCount}");
}
}
public static int Find(string input)
{
string K = "KICK";
int count = 0;
int index = input.IndexOf(K);
if (index > -1)
{
string a = input.Substring(index + K.Length);
count = checkCount(a);
count += Find(a);
}
return count;
}
public static int checkCount(string input)
{
string S = "START";
int count = 0;
int index = input.IndexOf(S);
if (index > -1)
{
count += 1;
count += checkCount(input.Substring(index + S.Length));
}
return count;
}
public static string RemoveWhitespace(string input)
{
return new string(input.ToCharArray()
.Where(c => !Char.IsWhiteSpace(c))
.ToArray());
}
}
}