我想出了这个逻辑,找到两个长度相等的最长的普通孩子,但它只能在简单的输出上成功运行,而在其他方面失败,请指导我在这里做错了。
String a, b;
int sum = 0;
int[] ar,br;
ar = new int[26];
br = new int[26];
a = Console.ReadLine();
b = Console.ReadLine();
for (int i = 0; i < a.Length; i++)
{
ar[(a[i] - 65)]++;
br[(b[i] - 65)]++;
}
for(int i =0;i<ar.Length;i++)
{
if (ar[i] <= br[i]) { sum += ar[i]; }
else sum += br[i];
}
Console.Write(sum);
Console.ReadLine();
输出: AA BB 0正确。 HARRRY SALLY 2正确
对于上述两个输入它运行但是当我提交评估时它在测试用例上失败。我无法访问我的逻辑失败的testacase。我想知道我的逻辑失败在哪里。
答案 0 :(得分:1)
你的第二个循环是错的。它只是查找数组中出现的字符数,并且仅使用no更新计数。包含最少编号的字符串中包含的常用字符。这些常见人物。
请参阅此链接以获取正确的实施方案。 http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring#Retrieve_the_Longest_Substring
在使用输入字符串之前,还可以使用String.ToUpper
将输入转换为大写字符。