找到string的最长公共子元素的逻辑有什么问题?
本文关键字:问题 元素 什么 string 找到 | 更新日期: 2023-09-27 18:13:25
我想出了这个逻辑来找到两个长度相等的字符串的最长共同子,但它只在简单的输出上成功运行,并且失败了其他人,请指导我我在这里做错了什么。
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();
输出:AABB0正确。HARRRY莎莉2正确
上面两个输入的都运行,但是当我提交评估时,它在它们的测试用例上失败了。我无法访问他们的测试用例,因为我的逻辑失败了。我想知道我的逻辑哪里出错了。
第二个循环完全错误。它只是查找在数组中出现的字符的计数,计数只更新为no。字符串中包含最少的。这些共同的特征。
请参考此链接以获取正确的实现。http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring Retrieve_the_Longest_Substring
在使用输入字符串之前,还可以使用String.ToUpper
将您的输入转换为大写字符。