找到字符串最长的普通孩子的逻辑是错误的

时间:2013-05-13 19:50:31

标签: c# algorithm logic

我想出了这个逻辑,找到两个长度相等的最长的普通孩子,但它只能在简单的输出上成功运行,而在其他方面失败,请指导我在这里做错了。

        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。我想知道我的逻辑失败在哪里。

1 个答案:

答案 0 :(得分:1)

你的第二个循环是错的。它只是查找数组中出现的字符数,并且仅使用no更新计数。包含最少编号的字符串中包含的常用字符。这些常见人物。

请参阅此链接以获取正确的实施方案。 http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Longest_common_substring#Retrieve_the_Longest_Substring

在使用输入字符串之前,还可以使用String.ToUpper将输入转换为大写字符。