C# 测试用例在算法回文中失败

C# 测试用例在算法回文中失败,c#,algorithm,testing,C#,Algorithm,Testing,下午好,我正在第页上进行一个练习,我有两个测试失败案例: 小写单字:错误答案 任何情况下,一个词:错误答案 我不明白,他们是指我,因为在算法中,我控制大小写 我的算法如下: using System; public class Palindrome { public static char[] abecedario = new char[]{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r',

下午好,我正在第页上进行一个练习,我有两个测试失败案例:

小写单字:错误答案

任何情况下,一个词:错误答案

我不明白,他们是指我,因为在算法中,我控制大小写

我的算法如下:

using System;

public class Palindrome
{
    public static char[] abecedario = new char[]{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'};
    public static char[] ABECEDARIO = new char[]{ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','W','X','Y','Z'};

    public static bool IsPalindrome(string str)
    {
        string strOriginal = string.Empty;
        string strInversa = string.Empty;
        for(int i = str.Length-1; i >= 0; i--)
        {
            string concatenarInversa = string.Empty;
            string concatenarOriginal = string.Empty;
            for(int j = 0; j < abecedario.Length; j++)
            {
               if(str[i] == abecedario[j] || str[i] == ABECEDARIO[j])
               {
                   concatenarInversa = abecedario[j].ToString();
               }
               if(str[(str.Length-1)-i] == abecedario[j] || str[(str.Length-1)-i] == ABECEDARIO[j] )
               {
                    concatenarOriginal = abecedario[j].ToString();
               }
               if(concatenarInversa!=string.Empty && concatenarOriginal != string.Empty)
               {
                   break;
               }
            }
            if(concatenarInversa!=string.Empty)
            {
                strInversa = strInversa + concatenarInversa;
            }
            if(concatenarOriginal != string.Empty)
            {
                strOriginal = strOriginal + concatenarOriginal;
            }
        }
        Console.WriteLine("strInversa : " + strInversa);
        Console.WriteLine("strOriginal : " + strOriginal);
        return strInversa == strOriginal;

    }


    public static void Main(string[] args)
    {
        Console.WriteLine(IsPalindrome("sEeS"));
    }
}
使用系统;
公共类回文
{
公共静态字符[]abecardio=新字符[]{'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','w','x','y','z'};
公共静态字符[]abecardio=新字符[]{'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','W','X','Y','Z'};
公共静态bool IsPalindrome(字符串str)
{
string strOriginal=string.Empty;
string strInversa=string.Empty;
对于(int i=str.Length-1;i>=0;i--)
{
string concatenarivenversa=string.Empty;
string concatenarOriginal=string.Empty;
对于(int j=0;j
您的
abecardio
变量缺少字母V(V)。试试这个:

public static char[] abecedario = new char[]{ 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
public static char[] ABECEDARIO = new char[]{ 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
或者(更容易键入):


对于当前代码失败的测试示例,请考虑“VEE”一词。它不是回文,但因为您的代码忽略了字母V,所以它认为它是回文。

您是否在调试器中仔细检查了它,以查看算法哪里出了问题?如果我不明白问题是什么,请告诉我测试用例。
public static char[] abecedario = "abcdefghijklmnopqrstuvwxyz".ToCharArray();
public static char[] ABECEDARIO = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();