diff --git a/cs/count-ways-to-build-good-strings.cs b/cs/count-ways-to-build-good-strings.cs new file mode 100644 index 0000000..1522475 --- /dev/null +++ b/cs/count-ways-to-build-good-strings.cs @@ -0,0 +1,28 @@ +public class Solution { + private static readonly int MOD = 1_000_000_007; + + public int CountGoodStrings(int low, int high, int zero, int one) { + var dp = new int[high + 1]; + dp[0] = 1; + + for (var end = 1; end <= high; ++end) { + if (end >= zero) { + dp[end] += dp[end - zero]; + } + + if (end >= one) { + dp[end] += dp[end - one]; + } + + dp[end] %= MOD; + } + + var good = 0; + for (var length = low; length <= high; ++length) { + good += dp[length]; + good %= MOD; + } + + return good; + } +}