我不知道我在哪里犯错。我是动态编程的新手。
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:可空对象必须具有值。