C# TopCoder Alogrithm系统测试失败

C# TopCoder Alogrithm系统测试失败,c#,string,algorithm,C#,String,Algorithm,我正在做一个顶级程序员的问题。问题陈述是- 一天,杰米注意到许多英语单词只使用字母A 这类词语的例子包括“AB”(腹部的缩写), “咩”(羊发出的噪音)、“AA”(一种熔岩)和“ABBA”(一种火山灰) 瑞典流行音乐) 受此启发,杰米创作了一个简单的游戏。你是 给定两个字符串:initial和target。游戏的目标是找到 将初始移动更改为目标的有效移动序列。那里 有两种类型的有效移动: 将字母A添加到字符串的末尾。将字符串倒转,然后 将字母B添加到字符串的末尾。返回“可能”(引号 为清楚起见)

我正在做一个顶级程序员的问题。问题陈述是-

一天,杰米注意到许多英语单词只使用字母A 这类词语的例子包括“AB”(腹部的缩写), “咩”(羊发出的噪音)、“AA”(一种熔岩)和“ABBA”(一种火山灰) 瑞典流行音乐)

受此启发,杰米创作了一个简单的游戏。你是 给定两个字符串:initial和target。游戏的目标是找到 将初始移动更改为目标的有效移动序列。那里 有两种类型的有效移动:

将字母A添加到字符串的末尾。将字符串倒转,然后 将字母B添加到字符串的末尾。返回“可能”(引号 为清楚起见),如果有一系列有效的移动将发生变化 开始进入目标。否则,返回“不可能”

下面是我对该问题的解决方案,它通过了面板中的所有测试,但在系统测试中失败。但是,我没有得到关于哪个测试用例失败的任何具体信息。请检查我的代码是否在某些情况下无法工作

class ABBA
{
public string canObtain(string initial,string target)
{
    string s = "Impossible";

            if (initial.Length > target.Length)
                return "Impossible";

            if (initial.Equals(target))
                return "Possible";

            if (CheckFirstWay(target,initial))
            {
                s=canObtain(initial+"A",target);
            }
            if (s.Equals("Impossible") && CheckSecondWay(target,initial))
            {
                s=canObtain(ReverseStringDirect(initial) + "B",target);
            }

            return s;
}
   public static string ReverseStringDirect(string s)
        {
            char[] array = new char[s.Length];
            int forward = 0;
            for (int i = s.Length - 1; i >= 0; i--)
            {
                array[forward++] = s[i];
            }
            return new string(array);
        }

        private static bool CheckSecondWay(string final, string initial)
        {
            if (final.Contains(ReverseStringDirect(initial) + "B") || final.Contains("B"+initial))
            {
                return true;
            }
            else
            {
                return false;
            }
        }

        private static bool CheckFirstWay(string final1, string initial)
        {
            if (final1.Contains(initial + "A") || final1.Contains(ReverseStringDirect(initial+"A")))
            {
                return true;
            }
            else
            {
                return false;
            }
        } 
}

您可以通过以下步骤检查哪个测试失败

  • 去指定的房间
  • 打开问题
  • 编译
  • 提交它
  • 然后运行系统测试
  • 您将在那里看到错误测试
  • 从中选择匹配项
  • 然后在如图所示的页面中,您将看到一组蓝色编码员和红色编码员,他们在比赛中名列前茅
  • 根据您的分区选择任意一名玩家<代码>[.]-->此徽标位于名称旁边
  • 然后检查他们的解决方案,您将看到这些测试
  • 这是……检查一下。

    您必须在此处键入系统测试。你可以查看下面的图片。图片来源:谷歌


    由于您的解决方案已经部分起作用,而这是TopCoder的问题,您可能会得到更好的反馈。请检查答案。此处提供了测试用例。如果有帮助,请选择答案。它可能会帮助未来的用户。你现在找到测试了吗?我在上找到了测试用例,但有什么方法可以帮我找出哪个测试用例失败了吗?我注意到不同的一点是,在练习题中,它写道“反转字符串,然后在字符串末尾添加字母B”,而竞赛有如下约束条件:将字母B添加到字符串末尾,然后反转整个字符串。“@SomeshDhal:是的,你可以..提交并运行系统测试。它会通过在测试用例旁边显示红色十字标记来告诉您哪个测试用例失败。@SomeshDhal:请发布proepr代码。否则它就没有意义了。您的代码未遵循topcoder中提交C#代码的规则。先编译。然后检查。