缩写| HackerRank |我没有通过第13个测试用例

时间:2019-07-03 13:39:15

标签: c#

我不知道我在哪里犯错。我是动态编程的新手。

PFB到问题的链接。

LINK: https://www.hackerrank.com/challenges/abbr/problem


static bool? abb(string a, string b, bool?[,] dp){
        int lenA = a.Length;
        int lenB = b.Length;
        if(dp[lenA, lenB].HasValue)
            return dp[lenA, lenB];
        if(lenA > 0 && lenB > 0){
            if(b[lenB - 1] == a[lenA - 1]){
                dp[lenA, lenB] = abb(a.Substring(0, lenA - 1), b.Substring(0, lenB - 1), dp);
            }
            else if(Char.IsLower(a[lenA - 1])){
                if(b[lenB - 1] == Char.ToUpper(a[lenA - 1])){
                    dp[lenA, lenB] = 
                    abb(a.Substring(0, lenA - 1), b.Substring(0, lenB - 1), dp).Value
                    ||
                    abb(a.Substring(0, lenA - 1), b.Substring(0, lenB), dp).Value;
                }
                else
                    dp[lenA, lenB] = abb(a.Substring(0, lenA - 1), b.Substring(0, lenB), dp);
            }
            else if(Char.IsUpper(a[lenA - 1])){
                return false;
            }
        }
        else if(lenA >= 0 && lenB == 0){
            if(lenA == 0)
                return true;
            foreach(var chr in a){
                if(Char.IsUpper(chr))
                    return false;
            }
            return true;
        }
        return dp[lenA, lenB];
    }
    static string abbreviation(string a, string b) {
        bool?[,] dp = new bool?[a.Length + 1, b.Length + 1];
        if(abb(a, b, dp).Value)
            return "YES";
        return "NO";
    }

我在以下3种情况下遇到此错误:System.InvalidOperationException:可空对象必须具有值。

0 个答案:

没有答案